Für einen SimpleCursorAdapter Cursor, Sie müssen nur die setFilterQueryProvider verwenden, eine andere Abfrage für Ihren Cursor zu laufen, auf der Grundlage der Einschränkung:
m_Adapter.setFilterQueryProvider(new FilterQueryProvider() {
public Cursor runQuery(CharSequence constraint) {
Log.d(LOG_TAG, "runQuery constraint:"+constraint);
//uri, projection, and sortOrder might be the same as previous
//but you might want a new selection, based on your filter content (constraint)
Cursor cur = managedQuery(uri, projection, selection, selectionArgs, sortOrder);
return cur; //now your adapter will have the new filtered content
}
});
Wenn eine Beschränkung hinzugefügt wird (. ZB durch eine Textview mit) der Adapter muss gefiltert werden:
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.d(LOG_TAG, "Filter:"+s);
if (m_slvAdapter!=null) {
m_Adapter.getFilter().filter(s);
}
}
Hoffe, das hilft. Ich werde versuchen, einen kompletten Artikel mit Quellcode in den nächsten Tagen zu schreiben.
Gute Antwort, eine der wenigen, die den RunQuery Teil mit Cursor zeigen - wäre noch besser, wenn Sie ein Beispiel für die Auswahl enthalten. Z.B. selection = FIELD_NAME_TO_FILTER + "Gefällt mir" + constraint.toString() + "'"; – DEzra
Wie sollten wir einen Cursor in RunQuery aufrufen, wenn wir eine SQLite-Datenbank verwenden? Das Verwenden der gleichen databaseHelper-Instanz, die zum Erstellen des Cursors für SimpleCursorAdapter verwendet wird, gibt mir eine "Ungültige Anweisung in fillWindow()" -Fehler. – rohitmishra
Gibt 'm_slvAdapter' den Status für' m_Adapter'? – r4m