Ich muss SearchView
aus meinem erstellen arrayList<String>
und die Vorschläge in der Dropdown-Liste gleich so anzeigen
Ich suche nach Tutorials, die Schritt für Schritt erklären, wie man SearchView
eine Aktionsleiste erstellt.
Ich habe die Dokumentation gelesen und folge dem Beispiel Google, aber es war für mich nicht nützlich.
Ich habe die Suche erstellt
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/action_search"
android:title="Search"
android:icon="@android:drawable/ic_menu_search"
android:showAsAction="always"
android:actionViewClass="android.widget.SearchView" />
</menu>`
Ich weiß jedoch nicht, wie ich die Parameter des String-Arrays einstellen soll. Ich habe versucht, das Ergebnis in einer anderen Aktivität abzurufen, aber es funktioniert nicht.
Antworten:
Es hat eine Weile gedauert, eine Lösung dafür zusammenzustellen, aber wir haben festgestellt, dass dies der einfachste Weg ist, um es so zu machen, wie Sie es beschreiben. Es gibt bessere Möglichkeiten, dies zu tun, aber da Sie Ihren Aktivitätscode nicht veröffentlicht haben, muss ich improvisieren und davon ausgehen, dass Sie zu Beginn Ihrer Aktivität eine solche Liste haben:
ExampleActivity.java
Jetzt müssen Sie einen Adapter erstellen, der erweitert ist aus
CursorAdapter
:ExampleAdapter.java
Eine bessere Möglichkeit, dies zu tun, besteht darin, wenn Ihre Listendaten aus einer Datenbank stammen, die
Cursor
von der Datenbank zurückgegebenen Funktionen direkt anExampleAdapter
die entsprechende Spaltenauswahl zu übergeben und den entsprechenden Spaltentext zu verwenden, um den Spaltentext in demTextView
im Adapter angegebenen anzuzeigen .Bitte beachten Sie: Wenn Sie importieren, importieren
CursorAdapter
Sie nicht die Android-Support-Version,android.widget.CursorAdapter
sondern stattdessen den Standard .Der Adapter benötigt außerdem ein benutzerdefiniertes Layout:
res / layout / item.xml
Sie können jetzt Listenelemente anpassen, indem Sie dem Layout zusätzliche Text- oder Bildansichten hinzufügen und diese mit Daten im Adapter füllen.
Dies sollte alles sein, aber wenn Sie dies noch nicht getan haben, benötigen Sie einen SearchView-Menüpunkt:
res / menu / example.xml
Erstellen Sie dann eine durchsuchbare Konfiguration:
res / xml / searchable.xml
Fügen Sie dies schließlich in das entsprechende Aktivitäts-Tag in der Manifest-Datei ein:
AndroidManifest.xml
Bitte beachten Sie: Die
@string/search
in den Beispielen verwendete Zeichenfolge sollte in values / strings.xml definiert sein. Vergessen Sie auch nicht, den Verweis aufcom.example
für Ihr Projekt zu aktualisieren .quelle
search.setSearchableInfo(manager.getSearchableInfo(getComponentName()));
die MethodenonCreateOptionsMenu()
und zweimal aufgerufen habenloadHistory()
. Also mache ich die globale Variable SearchView und SearchManager und rufe sie nurgetSearchableInfo()
einmal aufonCreateOptionsMenu()
. Und meine Vorschlagsliste funktioniert jetzt einwandfrei. Ich empfehle Ihnen, Ihren Code zu überarbeiten.Wenn jemand anderes ein Nullptr in der Suchansichtsvariablen hat, habe ich festgestellt, dass das Element-Setup ein kleines bisschen anders ist:
alt:
Neu:
Pre-Android x:
Für weitere Informationen wird die aktualisierte Dokumentation befindet sich hier .
quelle
app:actionViewClass="androidx.appcompat.widget.SearchView"
für AndroidxSearchDialog oder SearchWidget?
Wenn es um die Implementierung einer Suchfunktion geht, gibt es zwei Vorschläge für die offizielle Android Developer Documentation.
Sie können entweder einen SearchDialog oder ein SearchWidget verwenden .
Ich werde die Implementierung der Suchfunktion mit SearchWidget erklären.
Wie geht das mit dem Such-Widget?
Ich werde die Suchfunktion in einer RecyclerView mit SearchWidget erläutern. Es ist ziemlich einfach.
Befolgen Sie einfach diese 5 einfachen Schritte
1) Fügen Sie das SearchView-Element im Menü hinzu
Sie können hinzufügen,
SearchView
können wieactionView
im Menü mit hinzugefügt werden2) Richten Sie SerchView Hint-Text, Listener usw. Ein
Sie sollten SearchView in der
onCreateOptionsMenu(Menu menu)
Methode initialisieren .3) Implementieren Sie SearchView.OnQueryTextListener in Ihrer Aktivität
OnQueryTextListener
hat zwei abstrakte MethodenonQueryTextSubmit(String query)
onQueryTextChange(String newText
Ihr Aktivitätsskelett würde also so aussehen
4) Implementieren Sie SearchView.OnQueryTextListener
Sie können die Implementierung für diese abstrakten Methoden bereitstellen
5) Schreiben Sie eine Filtermethode in Ihren RecyclerView-Adapter.
Wichtigster Teil. Sie können Ihre eigene Logik schreiben, um die Suche durchzuführen.
Hier ist mein. Dieses Snippet zeigt die Liste der Namen, die den in das Feld eingegebenen Text enthält
SearchView
Relevanter Link:
Vollständiger Arbeitscode in SearchView mit einer SQLite-Datenbank in dieser Musik-App
quelle
Zur
Searchview
Verwendung dieses CodesFür XML
In Ihrem Fragment oder Ihrer Aktivität
In der Adapterklasse
quelle