AutocompleteTextView mit asynchronen Vorschlägen zeigt Dropdown-Menü nicht an

8

Ich füge TextChangedListener zu AutocompleteTextView hinzu. In TextChangedListener s afterTextChanged() Ich rufe AsyncTask an, welches Daten aus dem Web lädt (das Laden aller Daten beim Start der Aktivität ist keine Option, da Listen ziemlich groß sein können, so dass es nur eine Verschwendung von Datenverkehr ist). AsyncTask 's onPostExecute() sieht so aus (Ich benutze ArrayAdapter ):

%Vor%

Subregion ist mein benutzerdefiniertes Objekt mit überschriebenen toString() . Ich möchte, dass mein Programm mit dem Laden von Daten beginnt, wenn der Benutzer mit der Eingabe beginnt und die Ergebnisse sofort anzeigt, wenn sie empfangen und analysiert werden.

Mein Problem:

autocompleteTextView.showDropDown() hat keine Auswirkung. onPostExecute() empfängt die korrekte Liste der Daten, sie werden dem Adapter hinzugefügt, aber showDropDown() zeigt das Dropdown nicht an. Was ist los?

    
Eugene Chumak 28.05.2012, 15:01
quelle

3 Antworten

18

Ich mache genau dasselbe, und ich habe gerade diese Funktionalität erreicht. Anstatt den Adapter zu löschen und ihn einzeln aufzubauen, setze den Adapter wie folgt (ich mache das in einer Funktion, die in onPostExecute aufgerufen wird);

%Vor%

Sie müssen showdowndropdown nicht explizit aufrufen, die Autocomplete-Ansicht wird automatisch aktualisiert, wenn der Adapter sie darüber informiert, dass Daten geändert wurden.

Sie können auch

anrufen %Vor%

, was es unnötig macht,

aufzurufen %Vor%

Siehe setNotifyOnChange Hoffe ich könnte helfen.

    
Awemo 29.05.2012, 13:49
quelle
6

Ich war auch mit diesem Problem konfrontiert. Mein Abschlussschwellenwert war 2. Wenn 2 Zeichen eingegeben wurden, habe ich Daten vom Server abgerufen und den Array-Adapter ausgefüllt, aber autoRailwayFrom.showDropDown(); zeigt kein Dropdown ...

an

Ich schreibe gerade online und es funktioniert ...

%Vor%     
Bhavesh Hirpara 23.02.2013 18:28
quelle
1

Diese Frage wurde beantwortet, aber ich glaube, dass nicht auf eine gute Weise - Schlüssel für alle ist die filterbare Schnittstelle. Hier haben Sie ein Beispiel für einen Adapter, basierend auf BaseAdapter. Fehlender Teil hier ist die Kommunikation (ich habe Retrofit verwendet):

%Vor%     
piotrpo 04.08.2015 15:58
quelle

Tags und Links