Прямо сейчас я сталкиваюсь с проблемами, пытающимися реализовать FilterQueryProvider в моем пользовательском SimpleCursorAdapter, так как я не уверен в том, что сделать в функции runQuery FilterQueryProvider.
Другими словами, так как запрос, который включает мой ListView в основном, получает rowID, имя и третий столбец от таблицы моих баз данных, я хочу смочь отфильтровать курсор на основе частичного значения столбца имени.
Однако я не уверен в том, могу ли я сделать это непосредственно от runQuery, не разворачивая мой класс DB, так как я хочу отфильтровать существующий курсор, или я должен буду создать новую функцию запроса в своем классе DB, который частично ищет мой столбец имени, и если так, как я пошел бы о создании оператора запроса при использовании ограничительного аргумента CharSequence в runQuery?
Я также обеспокоен проблемами производительности, связанными с попыткой выполнить несколько запросов на основе частичного текста, так как рассматриваемая Таблица базы данных имеет приблизительно 1300-1400 строк. Другими словами, я столкнулся бы с узким местом, пытающимся отфильтровать курсор?
Вам необходимо выполнить запрос, который вернет новый отфильтрованный курсор:
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;
}
}