Daten von einer Activity an eine andere übergeben und in ArrayList speichern

  • 12 Antworten
  • Letztes Antwortdatum
D

donbilbo

Neues Mitglied
0
Hallo alle zusammen.

Hab folgendes Problem:

Aus einer Activity heraus möchte ich einen Datensatz aus einer Datenbank lesen und diesen einer anderen Activity übergeben, die diesen in einem ListView als ArrayList darstellt. Das funktioniert bisher auch, doch jedesmal, wenn ich einen neuen Datensatz der zweiten Activity übergebe, überschreibt er den alten. Ich will, dass er den neuen Datensatz aus Activty 1 einfach unter dem bestehenden platziert und so eine Liste erstellt.

Meine 2.te Frage wäre, wie ich gezielt später einen Datensatz löschen kann durch z.B. drücken des Entf.-Buttons neben dem Eintrag.

Danke scho ma für eure Hilfe.
 
HI,

rein logisches Denken :)
Versetz dich mal in die Lage der ArrayList.
Wenn Activity A den Datensatz liest und an Activity B übergibt und dort einfach steht:
Code:
Nehme den übergebenen wert und zeige ihn an
Ist klar das es überschrieben wird.
Du musst quasi ein
Code:
Text von dem alten wert nehmen + den übergebenen text
hinkriegen.

Zweite frage ähnliches Problem:
Du musst quasi die daten, die du übergibts, in der Activity B eindeutig erkennen. Dann kannst du später sagen:
Code:
delete * from X where Text = "Ich bin ein Ziegelstein"

Gruß
 
mach deine arraylist halt etwas globaler
 
Das mit globaler arraylist habe ich mir auch überlegt, aber wie definiere ich globale Variablen in Java?
hab schon die erstellung der arraylist in eine separate klasse gepackt, will von activity a daten in die arraylist.class packen (set) und aus activity b von ihr lesen (get)

läuft das übergeben und lesen auch über intents? bin noch anfänger, ein wenig code-beispiele wären hilfreich :)

Danke.
 
Würde eigentlich beides gehen :D
Du musst halt nur jeweils den neuen Text hinten dran hängen und nicht hinzufügen.

Ja über Intents kannst du auch übergeben (bin eignetlich davon ausgegangen das du das so gemacht hast xD)
Auf d.android.com such mal nach:
intent.putExtra()
und
intenet.getExtra()
[Vielleicht heißt es auch ExtraS xD)

Gruß
 
Hmmm, kapier nicht was ich falsch mache, aber app stürzt ab :confused:.

also, hab eine eigene Klasse ArrayLst in der ich folgende globale Var. definiere:

Code:
public static ArrayList<String> arrayList = new ArrayList<String>();
public static MyAdapter arrayAdapter=null;

in der Activity A wird folgendes in dem onClick() aufgerufen:
Code:
ArrayLst.arrayList.add(0, myEditText.getText().toString());
ArrayLst.arrayAdapter.notifyDataSetChanged();
Intent intent = new Intent(ActivityA.this, ActivityB.class);
startActivity(intent);

Sooo, und in ActivityB rufe ich dann folgendes auf:
Code:
txtView.setAdapter(ArrayLst.arrayAdapter);

Woran liegt das, dass das Programm abschmiert, wenn ich den Button drücke?
 
=> logcat
 
Log:
Code:
08-17 14:18:37.096: E/AndroidRuntime(1362): FATAL EXCEPTION: main
08-17 14:18:37.096: E/AndroidRuntime(1362): java.lang.NullPointerException
08-17 14:18:37.096: E/AndroidRuntime(1362): 	at com.android.example.ActivityA$1.onClick(ActivityA.java:59)
08-17 14:18:37.096: E/AndroidRuntime(1362): 	at android.view.View.performClick(View.java:3511)
08-17 14:18:37.096: E/AndroidRuntime(1362): 	at android.view.View$PerformClick.run(View.java:14105)
08-17 14:18:37.096: E/AndroidRuntime(1362): 	at android.os.Handler.handleCallback(Handler.java:605)
08-17 14:18:37.096: E/AndroidRuntime(1362): 	at android.os.Handler.dispatchMessage(Handler.java:92)
08-17 14:18:37.096: E/AndroidRuntime(1362): 	at android.os.Looper.loop(Looper.java:137)
08-17 14:18:37.096: E/AndroidRuntime(1362): 	at android.app.ActivityThread.main(ActivityThread.java:4424)
08-17 14:18:37.096: E/AndroidRuntime(1362): 	at java.lang.reflect.Method.invokeNative(Native Method)
08-17 14:18:37.096: E/AndroidRuntime(1362): 	at java.lang.reflect.Method.invoke(Method.java:511)
08-17 14:18:37.096: E/AndroidRuntime(1362): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-17 14:18:37.096: E/AndroidRuntime(1362): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-17 14:18:37.096: E/AndroidRuntime(1362): 	at dalvik.system.NativeStart.main(Native Method)
 
Was steht in Zeile 59 in ActivitA?

Gruß
 
steht folgendes:

Code:
				ArrayLst.arrayAdapter.notifyDataSetChanged();

wenn ich es auskommentiere stürzt es nicht mehr ab, zeigt aber auch keine Daten an :confused:
 
Adapter sollten nur von einer activity genuzt werden. es kann zu komischen effekten/problemen kommen, wenn du einen adapter mehrfach nutzt. also mache einfach einen neuen adapter und übergib im nur deine collection oder was auch immer.

ich finde es abgesehen davon besser über bundle put/getextras zu arbeiten, weil du so weniger abhängigkeiten im code schaffst und du so auch viel einfacher an activityB arbeiten könntest. du kannst zum beispiel nur zum debuggen im main einfach activityB mit ein paar testdaten füllen ohne activityA aufrufen zu müssen. das spart zeit. ;)
 
Läuft jetzt. Danke an alle. Musste folgendes in ActivtyA hinzufügen:

Code:
public static ArrayAdapter adapter;
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, ArrayLst.arrayList);

und in ActivityB muss ich nach jedem Hinzufügen eines Elementes folgendes ausführen:
Code:
ActivityA.adapter.notifyDataSetChanged();
 
Zurück
Oben Unten