J'ai créé une vue personnalisée en étendant AutoCompleteTextView (avec une fonction spécialisée appelée setCursorAdapter). Je fournis un SimpleCursorAdapter et ajoute un FilterQueryProvider. J'utilise ceci pour une liste de nombres où j'ai besoin de la capacité de rechercher n'importe où dans le nombre pour une allumette.Curseur personnalisé vers le texte avec AutoCompleteTextView
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 sélectionne la valeur dans le menu déroulant. La valeur que je reçois dans la fenêtre EditText: android.content.ContentResolver $ CursorWrapperInner @ ...
Comment puis-je éviter cela et obtenir mon texte (numérique) affiché correctement.
Merci