I\'m trying to call .notifyDataSetChange() on a SimpleCursorAdapter displayed in a ListView from an XML-parsing non-UI thread and can\'t for the life of me figure out how. I
No need to create a new adapter...
.notifyDataSetChanged()
should be called only in case the data rows actually changed (inserted or deleted rows), in case you just updated the values on rows a simple call to requery() on your cursor should be enough:
adapter.getCursor().requery();
Edit: by your comment I see that you have in fact a compilation problem...
You must declare the adapter as a class member (before/after mHandler declare it: private SimpleCursorAdapter adapter
)
Then when you initialize it, replace
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
R.layout.directory_people_item, mCursor,
new String[]{
//snip
new int[]{
//snip
);
with:
adapter = new SimpleCursorAdapter(this,
R.layout.directory_people_item, mCursor,
new String[]{
//snip
new int[]{
//snip
);
Create a new adapter when the query is finished and set it your listview to give a general idea below is an example of gridview change it accordingly to suit your needs
globalAdapter = new GridImageAdapter(getApplicationContext());
globalAdapter.notifyDataSetChanged();
grid.setAdapter(globalAdapter);
grid.invalidateViews();