3

コードで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);

リストは正しく表示されますが、2つの問題があります。1。このリストを並べ替えたい2.何を入力しても、完全なリストが表示されます。リスト内の一致するパターンに基づいてフィルタリングしたい。たとえば、リストに[ページ]、[ツール]の値が含まれている場合、ボックスにTと入力すると、ドロップダウンに[ツール]のみが表示されます。アイデアは、文字列テキストの任意の場所に入力されたパターンを含むオプションを表示することです。

これはどのように行うことができますか?助けてください。

よろしく、サパン

4

2 に答える 2

4

どの項目を表示するかをアダプタに指示する必要があります。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);
于 2011-04-16T10:21:49.813 に答える
0

代わりにCursorToStringConverter使用することもできます

mAdapter.setStringConversionColumn(mCursor.getColumnIndexOrThrow("whateverFieldYouNeed"));
于 2012-10-27T20:19:41.203 に答える