我使用帶有CheckBox的ListView,但正如大多數人知道的那樣,當您向下滾動滾動時,選中的CheckBox會在您滾動滾動滾動時取消選中。所以我一直在閱讀,我發現你可以通過(使用getView)CB的ID到getView的位置參數來保存CheckBox狀態!CheckBox在ListView中檢查狀態
但我不能使用getView與SimpleCursorAdapter,可以嗎?因爲我使用bindView!
感謝
我使用帶有CheckBox的ListView,但正如大多數人知道的那樣,當您向下滾動滾動時,選中的CheckBox會在您滾動滾動滾動時取消選中。所以我一直在閱讀,我發現你可以通過(使用getView)CB的ID到getView的位置參數來保存CheckBox狀態!CheckBox在ListView中檢查狀態
但我不能使用getView與SimpleCursorAdapter,可以嗎?因爲我使用bindView!
感謝
我設法複選框狀態恢復後,我用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;
}
});
但還是奇怪的東西發生,該複選框被在7或8個職位後回收。如果我檢查第一個CheckBox和超過10個位置/行,第八個也被檢查,當我檢查最後一個時,同樣的事情發生,8個位置上會有一個檢查CheckBox。
任何雖然? Ideias?幫幫我!
發生了什麼是回收。 7行適合你的屏幕,當你向下滾動時,最上面的一行正在被回收用於新的底部。你應該做的是保存複選框的狀態。
這裏是一個很好的解決了類似的問題:
https://github.com/commonsguy/cw-android/tree/master/FancyLists/RateList
你剛纔問這個是/約SimpleCursorAdapter或毫無疑問,你是不是也問如何使用BaseAdapter? BaseAdapters更靈活,但需要編碼才能使用。 – 2010-04-10 08:33:33
林問我是否有一種方法來留在SimpleCursorAdapter,仍然設法解決問題!否則,即時通訊建議,謝謝 – 2010-04-11 08:17:35