2012-03-30 25 views
0

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

+0

sicher, das ist eine Möglichkeit, es zu tun. – Th0rndike

Antwort

0

Es gibt mehrere Möglichkeiten:

  1. Sie Ihr Objekt Serializable implementieren und über Absicht teilen
  2. die ID-Pass und es
  3. Verwenden eine Singleton-Klasse mit statischen Feldern abrufen zwischen den Klassen zu teilen
  4. Verwenden Sie GlobalState (keine Erfahrung mit diesem, aber ich weiß, dass es möglich ist)
  5. Verwenden Sie SharedPreferences (obwohl dies in der Nähe der Verwendung der Datenbank ist)
+1

# 3 von dieser Liste ist Art von was ich übe und was ich empfehle. tatsächlich benutze ich JSON, um meine Serialisierung zu tun, anstatt "serializable" – dldnh

+0

Sekunde das zu implementieren. Ich hätte sie am besten empfohlen: p/meh – Yoeri

+0

können Sie Ihre Antwort bearbeiten – dldnh

1

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

+0

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? –

+0

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

0

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");