Ich habe eine Aktivität in einem Projekt, die eine Liste von Objekten vom Typ X enthält. Diese Objekte werden in einer Listenansicht ihres Namens angezeigt. Wenn ich auf ein Objekt in der Liste klicke, möchte ich mit dem ausgewählten Objekt fortfahren und seine Details anzeigen. Jetzt scheint es nicht so praktisch zu sein, Argumente in Android über Activities zu übergeben. Wie ist der übliche Weg, so etwas in Android zu tun? Momentan sehe ich diese Option: Ich starte eine neue Aktivität und gebe die ID mit einem Bündel weiter. Holen Sie das Objekt dann erneut aus der Datenbank.Objekt aus Listenansicht auswählen
Antwort
Es gibt mehrere Möglichkeiten:
- Sie Ihr Objekt Serializable implementieren und über Absicht teilen
- die ID-Pass und es
- Verwenden eine Singleton-Klasse mit statischen Feldern abrufen zwischen den Klassen zu teilen
- Verwenden Sie GlobalState (keine Erfahrung mit diesem, aber ich weiß, dass es möglich ist)
- Verwenden Sie SharedPreferences (obwohl dies in der Nähe der Verwendung der Datenbank ist)
so, wie ich es tun ist, um das JSON-serialisierte Objekt in einen Bundle
(putString) und übergibt diese durch die Intent
Ich verwende setzte die Activity
zu starten, die das einzelne Element in der Detailansicht angezeigt.
EDIT: die Tatsache, dass der JSON-String eine sehr praktische Sache im savedInstanceState zu speichern ist, macht eine noch attraktivere Lösung dieses IMO
Aber Genau das wollte ich nicht machen. Weil es eine schlechte Programmierpraxis zu sein scheint und die Anwendung zu verlangsamen scheint. Auch ein Objekt kann nicht immer serialisierbar gemacht werden, oder? Was, wenn ich eines Tages beschließe, etwas in mein Objekt aufzunehmen, das nicht serialisierbar ist? –
Ich spreche über JSON-serialisieren, von dem ich dachte, dass ich es in die Antwort bearbeitet hätte ... aber ich würde das lieber tun, als die Datenbank erneut abzufragen. Außerdem ist es eine sehr nützliche Zeichenfolge, die in savedInstanceState gespeichert werden kann. – dldnh
Wenn Sie die ausgewählten Artikel Details zu einer neuen Aktivität angezeigt werden sollen, in die Haupttätigkeit sollten Sie eine Intent verwenden, zum Beispiel:
Intent intentNew = new Intent(<YourActivity>.this, <NewActivity>.class);
intentNew.putExtra("ItemDetails", vector); //put an array or whatever you want, filled with item details
startActivityForResult(intentNew,1);
im NewActivity, sollten Sie tun:
double[] vector= (double[]) getIntent().getSerializableExtra("ItemDetails");
- 1. Objekt auswählen aus verschachtelten Sammlung mit Linq
- 2. Auswählen von Elementen in einer Listenansicht
- 3. Android Checkbox Listenansicht Alles auswählen (Deaktivieren/Aktivieren)
- 4. Linq Objekt auswählen aus der Liste auf Objekte je Attribut
- 5. Spalten aus numpy recarray auswählen
- 6. Löschen von Elementen aus Listenansicht
- 7. Auswählen und Löschen von Elementen in der Listenansicht
- 8. Auswählen aus einer Gridview
- 9. linq - aus in auswählen
- 10. Aus der Website auswählen?
- 11. ag-Raster cellEditor mit Objekt auswählen Werte
- 12. JavaFX Element in ListView auswählen
- 13. Fabric js Objekt in Gruppe auswählen
- 14. Entity Framework: Eigenschaft als Objekt auswählen
- 15. Delphi Objekt auswählen nach unbekannter Klassenart
- 16. Objekt auswählen in Listview Datatemplate ausgewählt wurden
- 17. Wie Sie Fabric.js Objekt programmgesteuert auswählen
- 18. Apache Drill aus Webdateien auswählen?
- 19. DataAdapter Zeichenfolge aus Basistabellenschema auswählen?
- 20. Ausgewählte Option aus Element auswählen
- 21. aus einzelnen Wert auswählen ViewBag
- 22. Daten aus multidimensionaler Liste auswählen
- 23. jQuery Text aus HTML auswählen
- 24. C#: Zeile aus DataGridView auswählen
- 25. Unterklasse aus Basisklasse auswählen ... möglich?
- 26. zufällig aus 4 Tabellen auswählen
- 27. aus Abfrage mehrere Werte auswählen
- 28. Liste aus einer Liste auswählen?
- 29. So erhalten Sie Datensätze aus der Listenansicht
- 30. Füllen einer Listenansicht mit aus einer Datenbank
sicher, das ist eine Möglichkeit, es zu tun. – Th0rndike