在ListAdapter上调用notifyDataSetChanged

sha*_*o86 3 android listadapter

我有一个ListAdapter如下所示:

setListAdapter(new ArrayAdapter<String>(DeleteMenu.this,             
                                  android.R.layout.simple_list_item_1, 
                                  classes));
Run Code Online (Sandbox Code Playgroud)

我试图notifyDataSetChanged()在一个onListItemClick()函数中调用它.我尝试了几种不同的方法,并在StackOverFlow中查看了类似的问题,但我仍然无法弄明白.

有人可以帮忙吗?

编辑:我应该更清楚,我没有收到错误,我根本就不知道该怎么称呼函数notifyDataSetChanged()方法.我是否必须将我ListAdapter的变量分配给变量并将其称为var.notifyDataSetChanged()

use*_*084 7

你应该调用notifyDataSetChanged适配器.

Adapter adapter = new Adapter();
ListView list = (ListView) findViewById(R.id.listview);
list.setAdapter(adapter);
adapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

  • 您在适配器上调用notifydatasetchanged.您不能在您的示例中执行此操作,因为您之后没有给它命名以引用它.那有意义吗? (3认同)

Mak*_*ibo 7

您可以通过获取对适配器的引用来调用方法notifyAdapterChanged().您可以保留本地引用(如user1411084s的答案),也可以通过调用来检索它:

getListAdapter()
Run Code Online (Sandbox Code Playgroud)

需要注意的是,接口ListAdapter不提供该方法notifyDataSetChanged(),因此您应该将其强制转换为先前分配的适配器类型.

结果将如下所示(能够在ListActivity/ListFragment中的任何位置调用:

((ArrayAdapter) getListAdapter()).notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)