Ich möchte AutoCompleteTextView
in meiner Aktivität ein verwenden und die Daten während der Benutzertypen durch Abfragen einer Web-API auffüllen. Wie mache ich das?
Erstelle ich eine neue Klasse und überschreibe sie AutoCompleteTextView.performFiltering
oder verwende ich einen benutzerdefinierten android.widget.Filter
Listenadapter und stelle eine benutzerdefinierte Klasse bereit , die performFiltering überschreibt?
Oder gibt es einen besseren Weg, um mein Endziel zu erreichen?
Ich habe etwas Ähnliches getan, aber es war für das Feld Schnellsuche und es beinhaltete die Implementierung eines Dienstes, aber ich glaube, das ist nicht das, was ich hier tun möchte.
Antworten:
Ich habe eine Lösung gefunden, ich weiß nicht, ob es die beste Lösung ist, aber sie scheint sehr gut zu funktionieren. Ich habe einen benutzerdefinierten Adapter erstellt, der ArrayAdapter erweitert. Im benutzerdefinierten Adapter habe ich getFilter überschrieben und meine eigene Filterklasse erstellt, die performFiltering überschreibt. Dadurch wird ein neuer Thread gestartet, damit die Benutzeroberfläche nicht unterbrochen wird. Unten sehen Sie ein Barebone-Beispiel.
MyActivity.java
AutoCompleteAdapter.java
quelle
performFiltering
Methode in einem Thread ohne Benutzeroberfläche ausgeführt?Aufbauend auf AJ. In der obigen Antwort enthält der folgende benutzerdefinierte Adapter auch die Verarbeitung der Serveranforderungen und das JSON-Parsing:
und benutze es genauso:
quelle
Chu: Gehen Sie wie folgt vor, um das Erscheinungsbild der Ansicht anzupassen und mehr Kontrolle über das Auspacken des Objekts zu erhalten ...
quelle
AutoCompleteUserAdapter
quelle
Hier ist eine Kotlin-Version der Adapterklasse, die Daten aus einer lokalen Datenbank über Room lädt:
Definition der DAO-Methode:
quelle