Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calling notifyDataSetChanged on a ListAdapter

I have a ListAdapter as shown below:

setListAdapter(new ArrayAdapter<String>(DeleteMenu.this,             
                                  android.R.layout.simple_list_item_1, 
                                  classes));

I am trying to call notifyDataSetChanged() on it within an onListItemClick() function. I've tried a few different ways and looked at similar questions here on StackOverFlow but I still can't figure it out.

Can someone please help?

Edit: I should be more clear, I'm not getting an error, I simply don't know what to call the function notifyDataSetChanged() method on. Do I have to assign my ListAdapter to a variable and call it like var.notifyDataSetChanged()?

like image 207
shanahobo86 Avatar asked Nov 30 '22 04:11

shanahobo86


2 Answers

You should call notifyDataSetChanged on Adapter.

Adapter adapter = new Adapter();
ListView list = (ListView) findViewById(R.id.listview);
list.setAdapter(adapter);
adapter.notifyDataSetChanged();
like image 135
user1411084 Avatar answered Dec 05 '22 00:12

user1411084


You can call the method notifyAdapterChanged() by getting a reference to the Adapter. You can either keep a local reference (like user1411084s answer), or retrieve it by calling:

getListAdapter()

Important to notice is that the interface ListAdapter doesn't provide the method notifyDataSetChanged(), so you should cast it to the type of the adapter you assigned earlier.

The result will look like this (able to call anywhere in your ListActivity/ListFragment:

((ArrayAdapter) getListAdapter()).notifyDataSetChanged();
like image 40
Makibo Avatar answered Dec 05 '22 01:12

Makibo