Question

An OnItemClickListener for a ListView has the following method:

@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id)

I'd like to have the adapter behind the ListView refresh, and I believe this is done through the use of:

BaseAdapter.notifyDataSetChanged()

How do I use the parent parameter in the onItemClick method to do this? So far I've tried:

parent.getAdapter().notifyDataSetChanged();

This throws an error because the object returned is of class HeaderViewListAdapter, which for reasons unknown isn't a subclass of BaseAdapter.

Was it helpful?

Solution

AFAIK, there isn't any method in HeaderListView for data refresh/reload. The only way I can think of doing this is to reassign the adapter.

OTHER TIPS

You can also get to the BaseAdapter via your custom adapter as show in the following code fragment:

public class HeaderViewListAdapter extends BaseAdapter {

...

  @Override
  public void notifyDataSetChanged() {
    super.notifyDataSetChanged();
  }

...
}

This throws an error because the object returned is of class HeaderViewListAdapter, which for reasons unknown isn't a subclass of BaseAdapter.

((BaseAdapter) ((HeaderViewListAdapter)listView.getAdapter()).getWrappedAdapter()).notifyDataSetChanged();

You don't need to call any method to refresh your adapter client when you work with cursor. Instead, after any operation you have to "Notify the changes" using getContentResolver().notifyChange(uri, null);

For example:

context.getContentResolver().update(SomeURI.CONTENT_URI, values, null,null);
context.getContentResolver().notifyChange(SomeURI.CONTENT_URI, null);

Your viewclient (Listview, Gridview, Whatever) will change automatically even you're using a custom adapter or not. Hope this help.

I found much easier way ..just call this.onCreate(null) that will reload complete create method but the activity remains same .

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top