2012-07-30 16 views
5

Ich benutze AutoCompleteTextView in meiner App mit einem benutzerdefinierten Adapter und es funktioniert perfekt im Hochformat-Modus. Im horizontalen Modus verwendet die Softwaretastatur jedoch den größten Teil des Bildschirms, und die Textansicht verwendet Überlagerungstasten anstelle von Ansichten, die vom Adapter bereitgestellt werden.AutoCompleteTextView Hinweise im Querformat

Ich konnte keine klare Dokumentation darüber finden, wie das hinter den Kulissen funktioniert. Es scheint, dass im Querformat AutoCompleteTextView Adapter getView() Methode umgeht, macht einige schmutzige Arbeit mit getItem() und rendert Objekte selbst mit rohen Zeichenfolgen.

Um alles noch schlimmer zu machen, dass accualy in AutoCompleteTextView scheint zwei Listen mit Auto-Vervollständigung Hinweisen präsentiert: Standard Drop-Down-und Overlay-Schaltflächen in der gleichen Zeit (dies ist gut sichtbar, wenn wir imeOptions auf flagNoExtractUi gesetzt AutoCompleteTextView Erweiterung in der Landschaft zu verhindern) .

Ich möchte meine eigenen Ansichten in beiden Situationen liefern - aber ich habe es bisher nur für das Dropdown-Menü zu tun. Irgendwelche Änderungen, um benutzerdefinierte Ansichten für eine überlagerte Liste bereitzustellen?

Es tut mir leid, aber ich kann Bilder aufgrund der niedrigen Ranking noch nicht posten. Ich kann sie senden, wenn jemand sie braucht.

+0

können Sie mir dabei helfen http://stackoverflow.com/questions/29046302/how-to-implement-autocompletetextview-with-listview –

Antwort

0

Ich bin gerade auf dieses Problem selbst gestoßen. Wie Sie gesagt haben, basiert die TextView in Landscape auf dem Ergebnis von getItem(). Ich sehe in diesem Szenario keine Möglichkeit, etwas anderes als Text bereitzustellen, aber eine einfache Lösung, um den richtigen Text in der Landschaft anzuzeigen, besteht darin, toString() für das Objekt zu überschreiben, auf dem der Hinweis basiert. Zum Beispiel verwende ich in meinem Szenario eine Liste von Kontaktobjekten, um meine Autovervollständigungshinweise zu füllen, also überschreibe ich toString() in meiner Contact-Klasse, um "FirstName LastName" statt einer rohen Objektdarstellung wie "Contact" anzuzeigen @ a2a6d4d3a5. "

+0

Es gibt eine [bessere Lösung] (http://stackoverflow.com/a/12934794/2469901) als das Ändern der Art, wie toString() funktioniert, was möglicherweise anders als für dieses eine Szenario implementiert werden soll. – Skytile

Verwandte Themen