Android AutoCompleteTextView должны отображать только соответствующие параметры в раскрывающемся списке - PullRequest
3 голосов
/ 16 апреля 2011

Я использую AutoCompleteTextView в своем коде и загружаю список из базы данных, используя SimpleCursorAdapter.

AutoCompleteTextView cocktailIngredientView = (AutoCompleteTextView) findViewById(R.id.item);
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
                android.R.layout.simple_spinner_item, mCursor,
                new String[] { "field" },
                new int[] { android.R.id.text1 });
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
cocktailIngredientView.setAdapter(adapter);
cocktailIngredientView.setThreshold(0);

Он правильно заполняет список, но у меня есть две проблемы: 1. Я хочу, чтобы этот список был отсортирован 2. Что бы я ни ввел, это отображает полный список. Я хочу, чтобы он фильтровал на основе сопоставления шаблонов в списке. например если список содержит значения Page, Tools ... тогда, если я введу T в поле, в раскрывающемся списке должны отображаться только инструменты. Идея состоит в том, чтобы отображать параметры, которые содержат введенный шаблон, в любом месте текстовой строки.

Как это можно сделать? Пожалуйста, помогите.

С уважением, Sapan

Ответы [ 2 ]

4 голосов
/ 16 апреля 2011

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

FilterQueryProvider filter = new FilterQueryProvider() {

    @Override
    public Cursor runQuery(CharSequence constraint) {
        // Make a DB query that filters based on the constraint

        return //whatever query results;
    }
};
myAdapter.setFilterQueryProvider(filter);

Что касается ситуации, когда выВыберите элемент в списке, вы должны переопределить CursorToStringConverter из SimpleCursorAdapter.Что-то вроде:

SimpleCursorAdapter.CursorToStringConverter conv = new SimpleCursorAdapter.CursorToStringConverter() {

    @Override
    public CharSequence convertToString(Cursor cursor) {
        int numCol = cursor.getColumnIndexOrThrow("whateverFieldYouNeed");
        String term = cursor.getString(numCol);
        return term;
    }
};
myAdapter.setCursorToStringConverter(conv);
0 голосов
/ 28 октября 2012

Вместо CursorToStringConverter вы также можете использовать

mAdapter.setStringConversionColumn(mCursor.getColumnIndexOrThrow("whateverFieldYouNeed"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...