Question

J'ai créé une vue personnalisée en étendant AutoCompleteTextView (avec une fonction spécialisée appelée setCursorAdapter). Je fournir un SimpleCursorAdapter et l'ajout d'un FilterQueryProvider. J'utilise cela pour une liste de numéros où j'ai besoin la possibilité de rechercher partout dans le numéro pour un match.

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);
    }

Tout fonctionne parfaitement, jusqu'à ce que je choisis la valeur de la baisse de baisse. La valeur que je reçois dans la fenêtre EditText: android.content.ContentResolver $ CursorWrapperInner @ ...

Comment puis-je éviter cela et mon (numérique) texte affiché correctement.

Merci

Était-ce utile?

La solution

Résolu: SimpleCursorAdapter.converToString (curseur) - I passé outre cette fonction pour extraire la valeur

.

Merci

Autres conseils

La meilleure façon est d'utiliser setStringConversionColumn public void

scroll top