У меня есть база данных, содержащая около 1 миллиона строк (до 15 миллионов), и мне нужно загрузить их в ExpandableListView. В моей базе данных есть общий столбец _id с моим сервером, и они никогда не удаляются, у них есть столбец с идентификаторами их режимов STATUS_AVAILABLE и STATUS_UNAVAILABLE, и мне нужно загружать только доступные.
Очевидно, что загрузка их всех с помощью курсора занимает слишком много времени и занимает слишком много памяти даже без вызова getCount(), поэтому я решил сделать это в адаптере моего списка:
Код: Выделить всё
Cursor mCursor = MyService.getMapsActivity_DB().rawQuery("SELECT * FROM "+"'"+getGroup(groupPosition)+"'"+" WHERE _id="+"'"+groupPosition+"'", null);
mCursor.moveToPosition(childPosition);
и загружаю их один за другим, но мой курсор учитывает только доступные элементы:
Код: Выделить всё
Cursor mCursor = getInformer().OnGetDatabase().rawQuery("SELECT COUNT(*) FROM "+"'"+getGroup(groupPosition)+"'"+ApplyChildLoadCondition(), getInformer().ChildSelectionArgs());
Возможно несовпадение идентификаторов и groupPosition. Итак, по сути, я спрашиваю, как я могу запросить свою базу данных, чтобы получить, например, следующее:
Код: Выделить всё
"SELECT * FROM table WHERE col_status = status_available POSITION = 999999, null);
но даже если такая вещь существует, я думаю, это займет некоторое время, поскольку она должна учитывать позицию, поэтому лучший способ сделать это - ленивая загрузка в курсор или в ArrayList Есть ли способ ленивой загрузки курсора при прокрутке, не теряя позиции в просмотре списка? (индексная полоса)
Подробнее здесь:
https://stackoverflow.com/questions/285 ... -on-scroll