无法从ListView Android中删除listItem

时间:2011-07-26 20:19:54

标签: java android listview

我正在使用此代码来执行此操作,但此时它不起作用。我可以选中复选框,当我点击按钮时,没有任何反应。

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();
        }
    }

任何帮助表示赞赏。提前谢谢。

1 个答案:

答案 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以查看是否一切正常