Eintrag[Cursor-Inhalt] aus ListView in nächste Activity übertragen

  • Antworten:4
  • Bentwortet
Fiete
  • Forum-Beiträge: 25

24.01.2013, 17:49:29 via Website

Guten Abend, ich mal wieder, diesmal nur eine Frage, "Wie kann ich das realisieren?" ;)

Also ich habe jetzt eine Liste mit Inhalten aus meiner SQLite-Datenbank gefüllt, so wie ich das wollte . Soweit so gut, nun möchte ich, wenn ich auf einen Eintrag klicke zur nächsten Activity kommen und gleichzeitig noch mit übertragen, welchen Eintrag ich geklickt hab.
Mein Ansatz war:

1lv.setOnItemClickListener(new OnItemClickListener()
2 {
3 @Override
4 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
5 {
6 ListView lv = getListView();
7 Intent intent = new Intent();
8 intent.setClassName(getPackageName(), getPackageName()+".Activity_List_All")
9
10 intent.putExtra("selected", lv.getAdapter().getItem(arg2).toString());
11 startActivity(intent);
12 }
13 });

Das Ergebnis ist: android.database.sqlite.sqlitecursor@34589652 als String.
Ich will aber den Inhalt des Cursors, nun die Frage wie realisiere ich das?

Danke!

Antworten
Fiete
  • Forum-Beiträge: 25

28.01.2013, 09:58:20 via Website

Danke, sehr gut :) Hat mir sehr gut geholfen ;)

Antworten
Fiete
  • Forum-Beiträge: 25

28.01.2013, 13:13:54 via Website

So nachdem das jetzt alles so geklappt hat, wollte ich nicht extra nochmal ein neuen Thread aufmachen. Das mit den Listen hat alles super geklappt.
Nun habe ich durch onListItemClick die _id übergeben lassen, klappt auch.

Nun werden die Datensätze in meiner Liste angezeigt. Ich klick drauf und komm in die nächste Activity. Ich nehm in diese die geklickte _id mit, damit hab ich auch schon rumgespielt und etwas rumgeforscht.

Via dieser _ID kann ich auf die EINE gesuchte Spalte meiner DB zugreifen. In dieser Spalte befindet sich ein Link. Gibt es eine Funktion die diesen Inhalt des Cursors, also der eine Link in einen String wandelt, so das ich den link nutzen kann, z.B. um einen intent (Browser) aufzurufen?
Oder einen Befehl der das SQL-Ergebniss nicht als Cursor sondern als String zurück gibt? Das Select soll ja nur den inhalt einer Zelle der DB liefern.

Hoffe hab mich verständlich ausgedrückt.

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

28.01.2013, 14:24:08 via Website

Die _id ist der Key (Schlüssel) der Row (Zeile) und nicht wie von Dir geschrieben einer Column (Spalte).

Du kannst also mit einer _id den kompletten Datensatz dieser Row lesen. Dazu öffnest Du wie gehabt einen Cursor und liest die gewünschten Spalten in dieser einen Row.

Ich unterstelle mal Du verwendest einen erweiterten SQLiteOpenHelper: Während Du für die Liste einen Cursor an die Activity lieferst kannst Du für einzelne Rows im Helper ein Objekt dieser Row-Klasse zusammenbauen und an die Activity liefern. Schau mal in die Code Snippets. Da gibts ein Beispiel von mir. Der Unterschied liegt in den Methoden fetchTablename (liefert Cursor) und getTablename (liefert Klasse dieses Row-Objektes). Die Klasse "Tablename.java" sollte den Namen einer Deiner Tabellen tragen und dieser Tabellenstruktur entsprechen in dem sie für jede Spalte eine private Variable sowie je einen Getter und Setter besitzt.

— geändert am 28.01.2013, 14:31:47

Antworten