Android: фильтрация SimpleCursorAdapter ListView

Прямо сейчас я сталкиваюсь с проблемами, пытающимися реализовать FilterQueryProvider в моем пользовательском SimpleCursorAdapter, так как я не уверен в том, что сделать в функции runQuery FilterQueryProvider.

Другими словами, так как запрос, который включает мой ListView в основном, получает rowID, имя и третий столбец от таблицы моих баз данных, я хочу смочь отфильтровать курсор на основе частичного значения столбца имени.

Однако я не уверен в том, могу ли я сделать это непосредственно от runQuery, не разворачивая мой класс DB, так как я хочу отфильтровать существующий курсор, или я должен буду создать новую функцию запроса в своем классе DB, который частично ищет мой столбец имени, и если так, как я пошел бы о создании оператора запроса при использовании ограничительного аргумента CharSequence в runQuery?

Я также обеспокоен проблемами производительности, связанными с попыткой выполнить несколько запросов на основе частичного текста, так как рассматриваемая Таблица базы данных имеет приблизительно 1300-1400 строк. Другими словами, я столкнулся бы с узким местом, пытающимся отфильтровать курсор?

7
задан Diego Tori 27 February 2010 в 19:14
поделиться

1 ответ

Вам необходимо выполнить запрос, который вернет новый отфильтрованный курсор:

public class MyActivity extends ListActivity implements FilterQueryProvider {

    private Cursor cursor;

    @Override
    public Cursor runQuery(CharSequence constraint) {
        if(cursor != null) {
            cursor.close();
        }
        cursor = somehowGetAFilteredCursorFor(constraint);
        startManagingCursor(cursor);
        return cursor;
    }

}

3
ответ дан 7 December 2019 в 16:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: