有沒有辦法檢查gridview
中的元素?Android:如何設置在gridview中檢查項目?
我找不到toggle()
方法或setChecked(true)
,我gridview
具有延伸BaseAdapter適配器,我想改變背景顏色當元件被檢查(不只是選擇)。
我會像ListView:GridView.setChoicheMode(MULTICHOICE)
然後item.toggle()
或item.setChecked(true)
並將檢查狀態存儲到視圖中。
編輯:
我添加了一個空CheckedTextView
,存儲檢查狀態。 但是,有沒有更乾淨的方法來做到這一點?
編輯2 現在我可以做我想要的但當我向下滾動gridview然後向上滾動選擇的項目不再被選中。
boolean checked = layout.getCheckedItemPositions().get(position);
if(checked){
check.toggle();
view.setBackgroundColor(getResources().getColor(android.R.color.transparent));
}
else{
check.toggle();
view.setBackgroundColor(getResources().getColor(android.R.color.holo_green_light));
}
其中layout是gridview的佈局。 我想我要修改我的適配器的getView方法,但是這個代碼不工作:
CheckedTextView check = (CheckedTextView) layout.findViewById(R.id.txv_grid_check);
boolean checked = check.isChecked();
if(checked){
layout.setBackgroundColor(c.getResources().getColor(android.R.color.holo_green_light));
}
else{
layout.setBackgroundColor(c.getResources().getColor(android.R.color.transparent));
}
編輯3
我覺得沒有辦法做我想做的(存儲狀態在CheckedTextView元素中),因爲視圖在滾動列表或gridview時被銷燬並重新創建。所以我需要處理物品的狀態到適配器中。我用int的HashSet來存儲檢查項目的位置,並且我從GridView中處理了這個列表的一些公共方法。 在gridview活動中,有可能獲得適配器,然後執行myadapter.check(int position)或取消選中(int position)。 然後在適配器中,進入getView()方法,我們需要檢查一個位置是否在列表中並設置適當的背景顏色。
使用選擇器xmls作爲背景以顯示選定的按下狀態。 –
在您的問題中添加更多說明。 – DynamicMind
@DynamicMind喜歡什麼? – gdantimi