首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android ListView 多選刪除:使用 CheckBox 記錄選中項 ID 並批量操作

     編輯:程式設計綜合問答

核心思路

在 Adapter 的 getView 中為每行綁定 CheckBox,點擊時維護一個**全局選中 ID 集合**(ArrayList<Long> selectedIds),刪除按鈕點擊時遍歷集合執行批量刪除。

關鍵 Adapter 代碼

public class MyAdapter extends SimpleAdapter {
    private List selectedIds = new ArrayList<>(); // 全局或外部傳入
    
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        View row = super.getView(position, convertView, parent);
        CheckBox cb = row.findViewById(R.id.cb1);
        
        // 根據 selectedIds 設置勾選狀態(防止複用錯亂)
        Long itemId = getItemId(position);
        cb.setChecked(selectedIds.contains(itemId));
        
        cb.setOnClickListener(v -> {
            if (cb.isChecked()) selectedIds.add(itemId);
            else selectedIds.remove(itemId);
        });
        return row;
    }
}

刪除按鈕邏輯

btnDelete.setOnClickListener(v -> {
    for (Long id : selectedIds) {
        db.delete(TABLE, "_id=?", new String[]{String.valueOf(id)});
    }
    selectedIds.clear();
    adapter.notifyDataSetChanged();
    cursor.requery(); // 或重新查詢
});

注意事項

  • selectedIds 必須**單例或由 Activity 持有**,不能定義在 Adapter 內部(因複用會重置)。
  • 列表項 ID 需穩定(數據庫主鍵),勿使用 position(滾動複用會變)。
  • 批量刪除建議使用事務(db.beginTransaction())提高性能。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved