Benutzerdefinierte Cursor auf Text mit AutoCompleteTextView
-
11-10-2019 - |
Frage
Ich habe eine benutzerdefinierte Ansicht durch die Erweiterung AutoCompleteTextView erstellt (mit einem spezialisierten Funktion namens setCursorAdapter). Ich bin ein SimpleCursorAdapter Versorgung und das Hinzufügen eines FilterQueryProvider. Ich benutze dies für eine Liste von Zahlen, wo ich die Fähigkeit benötigen überall innerhalb der Anzahl nach einer Übereinstimmung zu suchen.
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);
}
Alles funktioniert einwandfrei, bis ich den Wert aus dem Dropdown auswählen. Der Wert, den ich im EditText Fenster angezeigt: android.content.ContentResolver $ CursorWrapperInner @ ...
Wie vermeide ich diese und meinen (numerisch) Text korrekt angezeigt.
Danke
Lösung
Gelöst: SimpleCursorAdapter.converToString (Cursor) - I overrode diese Funktion den Wert zu extrahieren
.Danke
Andere Tipps
Der bessere Weg ist public void setStringConversionColumn zu verwenden ( int stringConversionColumn)