У меня есть ListView, который заполняется из пользовательского CursorAdapter.Каждый элемент (-row) имеет флажок.
Несколько важных фактов, прежде чем я объясню проблему:
A. Проверенные / непроверенные данные поступают изDB.
B .Я сохраняю расположение каждого «флажка» в логическом массиве.
C. Невозможно узнать, какой флажок установлен, без повторного запроса до тех пор, пока я не прокрутите его,поскольку он еще не загружен.
Проблема:
Я пытаюсь создать кнопку «Очистить все».для каждого «проверенного» флажка мне придется обновить столбец в БД на «нет».
Я попробовал LV.scrollTo(lastItem)
, а затем проверил, проверяется ли каждая строка:
for (int i = 0; i < cursor.getCount(); i++) {
boolean t = itemChecked.get(i); //check the array to see if this row is checked
if (t == true) {
//set to "no" in the DB
}
, но казалось, что он "пропустил" строки между тем, которые отображались насамый верх и самый низ.Я подумал, что это происходит, потому что они не обрабатываются и, следовательно, не сохраняют «проверенное» состояние в массиве.
Затем я попробовал этот маленький кусочек кода, который будет прокручивать каждые 5 строк или около того, но этовсе еще не работал:
int j = 0;
//loop times is the array.count() over the amount of rows that fit in the screen
while(j < loopTimes){
int n = j*fitToScreen;
Listview.setSelection(n);
j++ ;
}
Он просто прыгает прямо на дно, не читая эти строки.
Я предполагаю, что для рендеринга строк недостаточно времени.
Есть ли другой способ прокрутки вниз, не пропуская строки или выполняя то, что я пытаюсь сделать?
Спасибо заранее.