Просмотр списка фильтров Android в зависимости от ввода текста редактирования с помощью операторов SQL - PullRequest
0 голосов
/ 13 января 2012

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

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

Ответы [ 2 ]

0 голосов
/ 17 января 2012

Проверьте ответ на свой предыдущий вопрос, они очень похожи: строка поиска

0 голосов
/ 13 января 2012

У меня была такая же проблема, и я решил ее следующим образом:

//Search text and changed handler
        EditText tbSearch = (EditText)findViewById(R.id.android_searchbox);
        tbSearch.addTextChangedListener(new TextWatcher() {
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }

            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            public void afterTextChanged(Editable s) {
                ListView av = getListView();
                SimpleCursorAdapter filterAdapter = (SimpleCursorAdapter)av.getAdapter();
                filterAdapter.getFilter().filter(s.toString());
            }
        });

        entries.setFilterQueryProvider(new FilterQueryProvider() {
            public Cursor runQuery(CharSequence constraint) {
                return mDbHelper.fetchAllEntries(constraint);
            }
        });

При таком подходе вам потребуется метод, аналогичный FetchAllEntries (string sFilter)

/*
 * Override to return a Cursor over the list of Entries filtered by a
 * constraint
 * 
 * @return Cursor over filtered Entries
 */
public Cursor fetchAllEntries(CharSequence constraint) {

    if (constraint == null || constraint.length() == 0) {
        // Return the full list
        return fetchAllEntries();
    } else {

        String value = "%" + constraint.toString() + "%";

        String[] columns = new String[] { KEY_ROWID, KEY_TITLE,
                KEY_BODY, KEY_USER_PROFICIENCY };

        return mDb.query(DATABASE_TABLE, columns,
                KEY_TITLE + " like ? OR " + KEY_BODY + " like ? ", new String[] { value, value }, null, null,
                KEY_TITLE + " ASC ");

    }
}

Здесь у меня есть таблица с двумя столбцами (заголовок, тело)

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