0

AutoCompleteTextView を拡張して (setCursorAdapter という特殊な関数を使用して) カスタム ビューを作成しました。SimpleCursorAdapter を提供し、FilterQueryProvider を追加しています。これは、一致する番号内の任意の場所を検索する機能が必要な番号のリストに使用しています。

public void setCursorAdapter(final Uri uri, final String key) {

        Cursor c = getContext().getContentResolver().query(uri,
                new String[] { "_id", key }, null, null, key);
        SimpleCursorAdapter adapter = new SimpleCursorAdapter(getContext(),
                android.R.layout.simple_dropdown_item_1line, c,
                new String[] { key }, new int[] { android.R.id.text1 });

        this.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                ((SimpleCursorAdapter) getAdapter()).getFilterQueryProvider()
                        .runQuery(s);

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO Auto-generated method stub

            }

            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub

            }
        });

        adapter.setFilterQueryProvider(new FilterQueryProvider() {

            @Override
            public Cursor runQuery(CharSequence constraint) {
                Cursor c = getContext().getContentResolver().query(uri,
                        new String[] { "_id", key },
                        key + " LIKE '%" + constraint + "%'", null, key);
                return c;
            }
        });
        setAdapter(adapter);
    }

ドロップダウンから値を選択するまで、すべてが完全に機能しています。EditText ウィンドウで受け取る値: android.content.ContentResolver$CursorWrapperInner@...

これを回避し、(数値) テキストを正しく表示するにはどうすればよいですか。

ありがとう

4

2 に答える 2

1

より良い方法は、public void setStringConversionColumn(int stringConversionColumn)を使用することです。

于 2012-02-28T14:30:39.213 に答える
1

解決済み: SimpleCursorAdapter.converToString(cursor) -- この関数をオーバーライドして、値を抽出しました。

ありがとう

于 2010-11-18T05:54:11.277 に答える