我正在使用此代码来执行此操作,但此时它不起作用。我可以选中复选框,当我点击按钮时,没有任何反应。
SimpleAdapter adapter;
List<HashMap<String, String>> painItems = new ArrayList<HashMap<String, String>>();
ListView listthings;
...
cb = (CheckBox)findViewById(R.id.checkBox1);
adapter = new SimpleAdapter(this, painItems, R.layout.mylistlayout,
from, to);
listthings.setAdapter(adapter);
listthings.setOnItemClickListener(this);
deleteButton = (Button) findViewById(R.id.deleteButton);
deleteButton.setOnClickListener(this);
...
public void onClick(View v) {
if (v == this.deleteButton) {
// Toast.makeText(this, "delete clicked", Toast.LENGTH_SHORT).show();
deleteCheckedItems();
}
}
...
private void deleteCheckedItems() {
int count = this.listthings.getAdapter().getCount();
for (int i = 0; i < count; i++) {
if (this.listthings.isItemChecked(i)) {
painItems.remove(i);
adapter.notifyDataSetChanged();
listthings.invalidateViews();
}
}
任何帮助表示赞赏。提前谢谢。
答案 0 :(得分:1)
1)不要把adapter.notifyDataSetChanged();进入你的循环但是在deleteCheckedItems();
之后2)你为什么使用:listthings.invalidateViews(); ?您可以删除此行,这将重绘您的列表
3)为什么你没有在这里接受我的答案:How to implement check box in listView Android to delete listItems
4)你在painItems.remove(i)之后测试过吐司吗?这将告诉你是否真的删除了项目?或者也许在调用deleteCheckedItems()之后,显示新的painItems以查看是否一切正常