【发布时间】:2013-01-25 06:58:11
【问题描述】:
Android 新手,我在从数据库中删除条目后更新我的 ListView 时遇到问题。
在我的活动中,我有一个ListView,每行都有多个选择checkboxes。用户按下删除按钮后,deleteName() 被调用。然后deleteName() 将删除在ListView 中检查的所有名称。名称从数据库中删除,但 ListView 永远不会更新。
我尝试使用adapter.notifyDataSetChanged(),但没有任何反应。为什么我的ListView 不更新?
public void deleteName() {
NamesDataSource datasource = new NamesDataSource(this);
datasource.open();
ListView listView = (ListView) findViewById(android.R.id.namelist);
SparseBooleanArray checked = listView.getCheckedItemPositions();
List<Name> values = datasource.getAllNames();
ArrayAdapter<Name> adapter = new ArrayAdapter<Name>(this, android.R.layout.simple_list_item_multiple_choice, values);
for (int i = 0; i < checked.size(); i++) {
int position = checked.keyAt(i);
if (checked.valueAt(i))
datasource.deleteName(adapter.getItem(position));
}
adapter.notifyDataSetChanged();
setListAdapter(adapter);
datasource.close();
}
【问题讨论】:
-
不好的做法:1)每次删除数据时查找视图2)如果您使用notifyDataSetChanged(),则无需再次将适配器设置为ListView
-
尝试使用 values.remove(location here) 从值列表中删除数据
标签: android listview cursor adapter updates