Dynamisches Hinzufügen von Vorschlägen zur automatischen Vervollständigung der Textansicht unter Beibehaltung des Zeichenstatus

Problembeschreibung:

Ich habe ein Problem mit AutoCompleteTextView, bei dem ich nach jedem Tastendruck Vorschläge anzeigen muss. Die Vorschlagsliste ist dynamisch wie die Vorschlagsfunktion von Google. Dies bedeutet, dass die neuen Vorschläge hinzugefügt werden sollten, während der Benutzer weiter tippt, und alle übereinstimmenden alten Vorschläge angezeigt werden sollten.

Zum Beispiel

Ich schreibe "te" und dann sollten vorhergehende Vorschläge wie "test1" & "test2" und die neuen Vorschläge, die ich von der Web-API erhalten werde, angezeigt werden. Angenommen, Web-API gibt mir das Wort "Tee" und "Spannung".

Jetzt hat die AutoCompleteTextView "te" als Zeichenfolge, wobei alle vier Vorschläge darunter angezeigt werden.

Genau das suche ich.

sieht einfach aus, zeigt aber ein merkwürdiges Verhalten.

Ich verwende die standardmäßige ArrayAdapter-Klasseninstanz, für die ich global deklariere.

arrayAdapter=new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,suggestions);
word.setAdapter(arrayAdapter);

Vorschläge ist ArrayList.

Wenn ich ein neues Ergebnis von WebApi bekomme, rufe ich einfach an

arrayAdapter.notifyDataSetChanged();

um den Datenbeobachter und die damit verbundenen Ansichten zu aktualisieren (in unserem Fall AutoCompleteListView).

Aber es schließt Vorschläge.

Wenn ich nicht benutzenotifyDataSetChanged(); Es werden alle Vorschläge angezeigt, unabhängig von den eingegebenen Zeichen.

Ich habe es mit so vielen benutzerdefinierten Filtern versucht, aber keiner von ihnen ist hilfreich, da ich notifyDataSetChanged () nicht verwenden konnte.

Ich poste ein Bild, um Verwirrungen zu vermeiden.

Ich habe eine Verwirrung, warumnotifyDataSetChanged(); es funktioniert nicht. Ich habe keine andere Referenz der Liste mit derselben arrayAdapter-Instanz verwendet. Ich bezweifle wirklich, ob es ein Referenzproblem ist.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage