Как сохранить список <String>как ресурс в Android? - PullRequest
0 голосов
/ 10 июня 2011

У меня есть база данных с 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».

Мне кажется, что задержка при извлечении из курсора, поэтому я хотел сохранить его как быстро извлекаемый ресурс. Поправьте меня, если я ошибаюсь, полагая, что как строковый массив в ресурсах, он будет загружаться быстрее.

1 Ответ

1 голос
/ 10 июня 2011

Почему бы не использовать CursorAdapter , который вы присоединяете к своему ListView, а не извлекаете свои данные в список? Он будет автоматически обновляться при изменении базы данных и будет намного эффективнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...