我使用section listview从这里开始 http://lalit3686.blogspot.com/2012/05/sectionadapter.html
但我如何实施adapter.notifyDataSetChanged()
?
添加侦听器以更新列表视图数据:
mListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(SectionAdapterActivity.this, ""+position+"", Toast.LENGTH_SHORT).show();
test();
}
});
我只为更改/更新值添加新功能(仅测试):
public void test()
{
hashMap.clear();
for (int i = 0; i < 3; i++) {
hashMap.put("Mail", String.valueOf(1100 + i), 1);
}
for (int j = 0; j < 4; j++) {
hashMap.put("Case", String.valueOf(2100 + j), 15);
}
for (int j = 0; j < 5; j++) {
hashMap.put("File", String.valueOf(10000 + j), 20);
}
mListView.invalidate();
mListView.invalidateViews();
adapter.notifyDataSetChanged();
Log.e("dada", hashMap.toString());
}}
似乎不起作用,有人可以帮忙吗?
答案 0 :(得分:1)
hashmap
使用了相同的adapter
和ListView
个对象,并在创建hashmap
对象时使用了adapter
个对象。 adapter.notifyDatasetChanged()
,在那里添加一些日志。notifyDatasetChanged()
的效果只有在HashMap中的数据发生变化时才会显示 如果它保持为prev,则无法确定是否已被调用。答案 1 :(得分:0)
我不清楚你要通过调用notifyDataSetChange()来实现什么。
此方法仅在您更改已经创建的适配器使用的逻辑数据集合/数据库后生效。在这种情况下 - 它将导致使用新数据更新列表
如果你想做什么,那么使用它 - 你需要做的很简单:只需致电:
adapter.notifyDataSetChanged();
就是这样:)。没别的。