У меня есть база данных с 10000 записей . База данных не обновляется регулярно, но мне нужно часто получать данные из нее.
Один из вариантов выбора строки - это ListView с фильтрацией текста.
Но для ListView требуется несколько секунд для загрузки . Это время используется для запроса базы данных и помещения результатов из курсора в список. Поэтому я решил создавать список всякий раз, когда база данных обновляется , и использовать его каждый раз, когда я хочу создать ListView.
Мне нужны указатели на то, как я могу сохранить Список, чтобы я мог немедленно извлечь его и показать ListView.
Любые альтернативы, которые вы можете предоставить, также приветствуются.
UPDATE:
Мой начальный код:
public List<String> fetchNames() {
String[] columns={NAME_KEY};
List<String> names = new ArrayList<String>();
Cursor namesCursor=mydb.query(TABLE_NAME, columns, null, null, null, null, NAME_KEY, null);
Log.w("1", "Got query result");
namesCursor.moveToFirst();
while(!namesCursor.isAfterLast()){
names.add(namesCursor.getString(0));
namesCursor.moveToNext();
}
Log.w("1", "List created");
return names;
}
Проходит около 5 секунд между временем «Получен результат запроса» и «Список создан».
Я изменил код для использования CursorAdapter
public SimpleCursorAdapter fetchNames() {
String[] columns={"_id", NAME_KEY};
String[] from={NAME_KEY};
int[] to={R.id.list_item_1};
Cursor namesCursor=mydb.query(TABLE_NAME, columns, null, null, null, null, NAME_KEY, null);
Log.w("1", "Got query result");
SimpleCursorAdapter names = new SimpleCursorAdapter(dbContext, R.layout.list_item, namesCursor, from, to);
Log.w("1", "Returning CursorAdapter");
return names;
}
Операция все еще занимает 5 секунд для загрузки, но только после регистрации «Returning CursorAdapter».
Мне кажется, что задержка при извлечении из курсора, поэтому я хотел сохранить его как быстро извлекаемый ресурс. Поправьте меня, если я ошибаюсь, полагая, что как строковый массив в ресурсах, он будет загружаться быстрее.