2012-01-13 3 views
1

Я хочу реализовать панель поиска в своем приложении, которая будет фильтровать список в зависимости от букв, введенных в текст редактирования. Вот что у меня есть на самом деле, как дизайнAndroid добавить пользовательскую панель поиска в приложении

enter image description here

Так что я хочу, чтобы отфильтровать элементы по названию, так что я думаю, я должен изменить SQLITE заявления, потому что я наполнение ListView из базы данных.

И у меня есть два вопрос:

1.Which является лучшим способом для реализации пользовательской строки поиска: добавить textwatcher к тексту редактирования и изменить SQLite каждый раз, когда пользователь оператора ввести букву или?

2.Как сортировать в sqlite в зависимости от букв, введенных от пользователя. Если пользователь нажимает A, я хочу показать все элементы, имеющие эту букву, независимо от того, находится ли она в начале или в конце.

ответ

2

Итак, все, что нужно сделать, очень просты, независимо от того, какой тип Adapter вы используете. Сначала вам нужно создать TextWatcher и добавить его в ваш Edit Text. Чем в вашем onAfterTextChanged() вы можете создать новое заявление SQL, как:

String sql = "SELECT title FROM cards WHERE title LIKE '%"+someString+"%'" 
//where someString is `Charsequence` which you get in your onAfterTextChanged() 

Перед тем, как ваши данные еще раз, если вы используете ArrayList или любой другой вид Lists для хранения ваших данных вы должны очистить их, так что вы можете получить новые данные. И вы можете просто позвонить adapter.notifySetDataChanged(). И это должно сработать. По крайней мере, так я это делаю. Возможно, это не лучший способ, но он работает.

0

Какое значение составляет ваша база данных? если это не большая, то я думаю, что простой SQL должен работать для вас:

SELECT Column1, Column2 
FROM myTable 
WHERE myColumn LIKE 'somecharacter%' 

Вы можете позвонить в БД, пока пользователь печатает или можете использовать какую-либо другую логику, как пользователь нажмет на конкретную кнопку.

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