需求:GridView 每個項目像 CheckBox 一樣有「選中/未選中」兩種狀態,並能取得選取狀態。
Checkable 介面的容器(如 CheckableLinearLayout)或直接用 CheckBox。drawable 定義 state_checked、state_pressed 等背景切換。gridView.setChoiceMode(GridView.CHOICE_MODE_MULTIPLE); // 或 SINGLE
gridView.setAdapter(new MyAdapter(...));
public View getView(int pos, View convertView, ViewGroup parent) {
View v = ...;
Checkable c = (Checkable) v;
c.setChecked(gridView.isItemChecked(pos)); // 同步狀態
return v;
}
SparseBooleanArray checked = gridView.getCheckedItemPositions();
for (int i = 0; i < checked.size(); i++) {
if (checked.valueAt(i)) {
int pos = checked.keyAt(i);
// 處理選中項目
}
}
Checkable,否則 setChecked 無效。CHOICE_MODE_MULTIPLE 允許多選,SINGLE 單選。ListView/GridView 內部維護,Adapter 只負責同步顯示。此模式適用於相簿選圖、聯選人多選等常見場景。