In the onCreate() event of an Activity, I have started an AsyncTask to retrieve Product data from a database. After this has been completed successfully, how can I update the display?
Metacode:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.venueviewbasic);
(..)
new GetProductDetails().execute();
class GetProductDetails extends AsyncTask<String, String, String> {
protected String doInBackground(String... params) {
// updating UI from Background Thread
runOnUiThread(new Runnable() {
public void run() {
// Check for success tag
int success;
try {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("id", vid));
(.. retrieve and parse data and set new textview contents ..)
The textviews etc. don't get updated however.
If you want to update the view from async after complete process in then you can use
protected void onPostExecute(String result)
{
textView.setText(result);
}
But if you want to update data while running background process then use. For ex...
protected Long doInBackground(URL... urls) {
int count = urls.length;
long totalSize = 0;
for (int i = 0; i < count; i++) {
totalSize += Downloader.downloadFile(urls[i]);
publishProgress((int) ((i / (float) count) * 100));<------
}
return totalSize;
}
protected void onProgressUpdate(Integer... progress) { <-------
setProgressPercent(progress[0]);
}
for more detail see this link Hope this will help you...!
I am guessing the question is more about how to get hold of the UI View if the asyncTask is in a separate file .
In that case you have to pass the context to the Async task and use that to get the view.
class MyAsyncTask extends AsyncTask<URL, Integer, Long> {
Activity mActivity;
public MyAsyncTask(Activity activity) {
mActivity = ativity;
}
And then in your onPostExecute use
int id = mActivity.findViewById(...);
Remember you cannot update the View from "doInBackground" since its not the UI thread.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With