[英]CheckBox checked state in a ListView
我正在將ListView與CheckBox一起使用,但是眾所周知,當您向下滾動時,選中的CheckBox在向上滾動時會被取消選中。 因此,我一直在閱讀,發現可以將CB的ID傳遞(使用getView)到getView的position參數以保存CheckBox狀態!
但是我不能將getView與SimpleCursorAdapter一起使用,可以嗎? 因為我正在使用bindView!
謝謝
發生的事情是回收。 屏幕上可容納7行,向下滾動時,頂部的將被回收,底部的將被回收。 您應該做的是保存復選框的狀態。
這是解決類似問題的好方法:
https://github.com/commonsguy/cw-android/tree/master/FancyLists/RateList
使用setViewBinder向上/向下滾動后,我設法恢復了復選框狀態(在另一個答案中看到了它):
mAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
if(columnIndex==4) {
cb=(CheckBox)view;
cb.setChecked(cursor.getInt(4)==0? false:true);
return true;
}
return false;
}
});
但是仍然發生了一些奇怪的事情,CheckBox在7或8個位置后被回收。 如果我檢查第一個CheckBox並且有10個以上的位置/行,則還會檢查第8個,當我檢查最后一個時,也會發生同樣的情況,上面8個位置將有一個Checked CheckBox。
可以嗎 愛迪亞? 救命!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.