How to call notifyDataSetChanged() from AsyncTask… here is a solution to the problem.
How to call notifyDataSetChanged() from AsyncTask
I
have an ArrayAdapter
with an AsyncTask
in it, but I’m not sure how to call
notifyDataSetChanged
/ from onPostExecute<
Example:
public class ColorAdapter extends ArrayAdapter<Color> {
List<Color> colorList;
Context context;
....
public ColorAdapter(Context context, List<Color> list) {
this.context = context; this.colorList = list;
}
public View getView (final int position, final View view, final ViewGroup parent) {
.....
}
class DeleteColorTask extends AsyncTask <String, String, String> {
int colorId;
DeleteColorTask (int colorId) {this.colorId = colorId; }
protected String doInBackgroud (String ... args) {
call to server to delete the color
colorList.remove(colorList.indexOf(...));
}
protected void onPostExecute(String s) {
HOW CAN I CALL notifyDataSetChanged() here?? this.notifyDataSetChanged() doesn't work since I am inside DeleteColorTask class
}
}
}
I call the above from my activity like this:
adapter = new ColorAdapter(context, colorsList);
setListAdapter(adapter);
Solution
You can call it like this:
ColorAdapter.this.notifyDataSetChanged();
By the way, a more appropriate place to start this AsyncTask
is its host fragment/activity, why?
AsyncTasks can sometimes stay longer than you expect, and they can be a nuisance if you don’t manage their lifecycle locally.