1

Моя цель: Реализация поиска в приложении.Пользовательские предложения ContentProvider не отображаются

Как это должно работать: У меня есть несколько действий, которые имеют SearchView в пределах их панели действий (или панель инструментов, как они теперь называют), а также специальный поиск активности. Я хочу иметь возможность вводить текст в SearchView, получать предложения, пока я вводю текст, и когда я отправляю поиск, чтобы запустить выделенное мероприятие и сделать правильный список результатов.

Что я сделал до сих пор: я пошел с SearchView с методом ContentAdapter как предложено here. Мне удалось найти SearchView в каждом действии, когда я нажимаю клавишу «перейти» на клавиатуру. Я попал в выделенную операцию «Поиск», и запрос отображается (чтобы реализовать эффективный поиск позже). Все идет нормально.

Проблема: Я попытался создать пользовательский ContentProvider предоставить некоторые макетные предложения, но я не смог заставить его работать. Я определяю внутри него пользовательскую String [], а затем в методе запроса соответствует моему поиску с элементами в указанной строке. Курсор зарегистрирован, и метод запроса срабатывает, когда я пишу текст, но результаты не выделены. В выделенной операции поиска я показываю пустой список-представление и получаю «столбец с ошибкой и кешированием» IllegalStateException

У меня возникли проблемы с поиском любой информации, поскольку все, кажется, используют ContentProvider с локальной базой данных. Однако я намерен в будущем получать свою информацию из REST API в методе запроса и возвращать курсор с использованием полученных значений (как в примере this)

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

ответ

2

Fixed это ...

Проблема в том, что я создавал свой MatrixCursor в OnCreate.

Решение это объявить и создать экземпляр курсор в запроса метода.

Примечание стороны: Как выясняется, в столбцах String [], передаваемый конструктору MatrixCursor Вам необходимо указать значения, используя SearchManager константы (т.е. SearchManager.SUGGEST_COLUMN_TEXT_1), в противном случае текст не будет отображаться в представлении предложения, если вы используете представление по умолчанию и адаптер.

Надеюсь, это поможет кому-то.

Смежные вопросы