Ich habe eine fragment
X, die in der Tat eine RecyclerView
hat, X hat eine Suchansicht, ich verwende die Suchansicht, um etwas zu suchen und die RecyclerView
in wenigen Zeilen zu filtern. Nach dem Filtern, wenn der Benutzer auf eine Zeile klickt, geht es zu einem anderen fragment
sagen Y. Von dort, wenn der Benutzer zurück klickt, kommt es zurück zu X. Meine Aufgabe ist es, dass X die Suchergebnisse nach dieser Rückkehr persistieren sollte. Was ist der beste Ansatz, um dies zu erreichen?Wie Suchergebnisse in Fragment wiederherstellen?
Antwort
Eigenschaft überschreiben onSaveInstanceState
in Fragment
, so dass es Sucheingabe - Filter speichern wird. Überschreiben Sie auch onCreate
so, dass der gespeicherte Filter auf Ihre RecyclerView
angewendet wird.
Bevor zu einem anderen Fragment der Navigation erhalten Fragment.SavedState
über FragmentManager
und es vorübergehend in Activity
speichern, die Ihre Fragmente hostet. Beachten Sie, dass dieser Status verloren gehen kann, wenn Sie den Aktivitätsstatus aufgrund von Konfigurationsänderungen nicht ordnungsgemäß speichern (rotate) = Sie müssen auch onSaveInstanceState
in Activity
überschreiben. Oder speichern Sie einfach Fragment.SavedState
im globalen Bereich (irgendein statisches Feld oder in Application
).
Wenn Sie zum vorherigen Fragment zurückkehren, erstellen Sie das Fragment aus Fragment.SavedState
i. e. Rufen Sie Fragment#setInitialSavedState(Fragment.SavedState)
auf.
Für weitere Details siehe meine research zu ähnlichen Thema.
Sie können ein Singleton-Muster verwenden, um die Daten zu speichern!
z.
// DataManager.java
public class DataManager {
private static DataManager thisInstance;
// Declare instance variables
List<String> searchResultItems;
public static DataManager getSharedInstance() {
if (thisInstance == null) {
thisInstance = new DataManager();
}
return thisInstance;
}
private DataManager() {
searchResultItems = new ArrayList<>();
}
public List<String> getSearchResultItems() {
return searchResultItems;
}
public void setSearchResultItems(List<String> searchResultItems) {
this.searchResultItems = searchResultItems;
}
}
Jetzt können Sie speichern und retrive Daten von überall her:
// Setter
DataManager.getSharedInstance().setSearchResultItems(items);
// Getter
List<String> items= DataManager.getSharedInstance().getSearchResultItems();
- 1. Speichern und Wiederherstellen Fragment-Status
- 2. Android Navigation Tabs: Wiederherstellen Fragment Ansichtszustand
- 3. Wie Google-Suchergebnisse
- 4. Wie search Suchergebnisse in Kategorien wie Ebay?
- 5. Anzeige Suchergebnisse in einem Fragmente, nicht Aktivität
- 6. Wordpress Suchergebnisse in Modal
- 7. Suchergebnisse in UITableView anzeigen
- 8. Fragmentfragment-Backstack für Fragment mit zwei möglichen Backstack-Pfaden wiederherstellen
- 9. Wie Suchergebnisse in Gruppen wie WhatsApp angezeigt werden, tut
- 10. Suchergebnisse in JTable speichern
- 11. Fragment Erstellen/Wiederherstellen einer doppelten Ansicht beim erneuten Anfügen
- 12. wie Suchergebnisse mit Javascript filtern
- 13. Wiederherstellen der Aktivität mit dem richtigen Fragment und Status
- 14. Suchergebnisse filtern
- 15. Wie erhält man eindeutige Suchergebnisse?
- 16. Wie paginieren Suchergebnisse in Django 1.7?
- 17. Wie Suchergebnisse in Schienen dynamisch angezeigt werden
- 18. Wie Sie doppelte Suchergebnisse in elasticsearch entfernen?
- 19. Wie postgresql Suchergebnisse mit PHP
- 20. Customizing Suchergebnisse
- 21. Wie Suchergebnisse aus jedem Index
- 22. Wie svn log Suchergebnisse einzuschränken?
- 23. Keine Suchergebnisse
- 24. Wie man link_to wiederherstellen gelöschte Objekte wiederherstellen?
- 25. wiederherstellen/wiederherstellen Tabelle
- 26. Wiederherstellen und Wiederherstellen Szenario
- 27. Tuning Unschärfen Suchergebnisse in Elasticsearch
- 28. Verschiedene Suchergebnisse in verschiedenen Umgebungen
- 29. Suche Suchergebnisse in Jekyll Suche
- 30. Refresh-Fragment in Fragment
Post Dein Code hier. –