Daten aus einem ArrayList lesen

  • 35 Antworten
  • Neuester Beitrag
Diskutiere Daten aus einem ArrayList lesen im Android App Entwicklung im Bereich Betriebssysteme & Apps.
Chri

Chri

Fortgeschrittenes Mitglied
Shinigami schrieb:
Ich glaube dafür sind Intents nicht geschaffen.

Und langsam musste mal Dein Gesamt-Konstrukt erläutern, damit Dir geholfen werden kann :D

Gruß,
Shini
Ok, das kann ich machen!
Also *tiefLuftHol*

Ich habe 3 Tabs. Jedes dieser Tabs ist eine Aktivity. In einem Tab, logge ich mich bei einem Server ein, der mir dann einen String mit Daten zurückschickt. Diese Daten übergebe ich einem Parser(eine weiter Aktivity). Der macht mir daraus eine ArrayList. Und jetzt habe ich das Problem, dass ich diese erzeugte Liste in einen Anderen Tab bringe, der wiederum eine ListActivity ist. Damit ich dann in dem ListActivityTab auf die einzelnen Elemente klicken kann, und dann werden Einzelheiten von dem geklickten angezeigt.

Hoffe das war verständlich!

PS: kann mich ab morgen leider erst wieder ab nächste Woche mit meinen Problemen beschäfftigen! Hoffe aber (und bitte darum), dass ihr mir dann wieder so gut weiterhelfen werdent :)
 
Zuletzt bearbeitet:
S

Shinigami

Gast
Ich helfe gern weiter weiter :cool:

Chri schrieb:
Hoffe das war verständlich!
Das habe ich verstanden:

TabActivity: (welche gemeinsamen Infos werden bisher hier gehalten?)
Tab1: Login und Daten holen; wenn erfolgreich wird das Ergebnis an Tab2 geben
Tab2: Anzeige des Ergebnisses in einer Liste; Auswahl eines ListItems
Tab3: vermutl. Anzeige der Details?

Chri schrieb:
Diese Daten übergebe ich einem Parser(eine weiter Aktivity).
Macht in meinen Augen keinen Sinn. Nen Parser verarbeitet Daten während eine Activity diese tendenziell "nur" anzeigt. Der Parser müsste ja irgendwo zwischen Tab1 und Tab2 ins Spiel kommen oder? Wie ist das bisher gelöst?

Gruß,
Shini
 
S

swordi

Lexikon
jo genau, sehe ich auch so. entweder haben wir da etwas falsch verstanden oder der aufbau ist eher suboptimal

activity ist sozusagen die zwischenschicht zw hintergrundberechnungen und benutzer ( wenn man so will )

der parser hat so wie ich das verstanden habe da nichts verloren. der sollte eher unabhängig von der activity agieren können oder?
 
Chri

Chri

Fortgeschrittenes Mitglied
Tab 3 ist bis jetzt noch nicht belegt!(Der ist dann für was Unabhängiges vorgeshen, was man zur Zeit noch weglassen kann)
Ablauf ist zur Zeit: Tab1 Login; wenn der erfolgreich war, dann kann ein Downloadbutten gedrückt werden. Der fordert die Daten vom Server. Diese in String und noch im 1Tab wird dann der Parser aufgerufen. Der sollte dann seine erstellte liste zum 2. Tab übergeben und der zeigt sie dann an

Aber sonst hast dus gut verstanden ;)

Den Parser hab ich großteils aus einem tutorial übernommen und für meine Zwecke abgeändert! Es kann sein, dass es eine optimalere Lösung gibt, nachdem ich mich aber mit Parsen überhaupt nicht auskannte, war es für mich schon eine Herausvorderung, ihn so abzuändern, dass er das macht, was ich will:)
 
S

Shinigami

Gast
Wenn Du also unbedingt bei Deinem Tab-Design bleiben möchtest, würde ich die TabActivity als Drehpunkt für die gesamte Funktionalität verwenden. Mit dem bereits verwendeten Aufruf getParent() aus den Child-Activities (den Tabs) kommst Du ja stets wieder an eine Referenz.

Den Download der Daten sowie das Parsen würde ich in mind. eine separate Klasse auslagern und eine Referenz auf diese Klasse(n) in der TabActivity speichern. Über oben genannten Weg kommst Du ja immer wieder daran. Diese Klasse hat mit Activities nichts zu tun und kann daher auch nicht über Intents aufgerufen werden sondern wird in der TabActivity instanziiert. Sämtliche Tabs können dann daraus ihre benötigte Infos lesen oder auch welche zurückschreiben bzw Methoden aufrufen somit die Funktionalitäten anstoßen.

Hoffe liege nicht allzu falsch.

Gruß,
Shini
 
Chri

Chri

Fortgeschrittenes Mitglied
Hallo! Und auf einen guten Start in die neue Wochen ;)
Shini deine Idee klingt gut!, nur glaube ich, dass ich dann wieder auf das Problem mit dem Timing stoßen werde! Ich darf die Listactivity ja erst dann aufrufen, wenn der Download erfolgreich war und der Parser fertig ist mit seiner Arbeit! Und das macht mir ziemliches Kopfzerbrechen!

mfg Chri

PS: Kleines Verständnisproblem: "Diese Klasse hat mit Activities nichts zu tun und kann daher auch nicht über Intents aufgerufen werden sondern wird in der TabActivity instanziiert."
Welche klasse meinst du mit "Dieser Klasse"?
 
S

Shinigami

Gast
Diese Klasse = Deine Parserklasse/bzw die, die Logik enthält

Die Frage ist ob man nen Tab auf inaktiv setzen kann, sodass er gar nicht erst angewählt werden kann.

Ansonsten müsstest Du über den 1. Tab vllt ein Pop-Up mit Progress-Bar anzeigen, welcher sich nur mit nem Button "Abbrechen" schließen lässt, was dann aber natürlich auch die Bearbeitung abbricht. Der Parser müsste ansonsten dieses Pop-Up schließen bei Beendigung. Solange das Pop-Up da ist, ist ja kein Tab-Wechsel möglich...

Gruß,
Shini
 
Chri

Chri

Fortgeschrittenes Mitglied
Das Problem ist ja, dass der Code der Reihe nach abgearbeitet wird! Ich hätte es auch schon mit einer Dauerschleife probiert, die erst fortgesetzt wird, wenn alle Daten da sind! Aber dann hängt logischerweise das ganze Programm!
Hoffe, uns fällt da noch eine geignete Lösung ein!

mfg
 
Chri

Chri

Fortgeschrittenes Mitglied
Shinigami schrieb:
Den Download der Daten sowie das Parsen würde ich in mind. eine separate Klasse auslagern und eine Referenz auf diese Klasse(n) in der TabActivity speichern.

Gruß,
Shini
Wenn ich nur eine Referenz mache, bekomme ich einen Fehler! Man muss eine Instanz der Klasse machen (dann funktioniert es zumindest)

mfg Chri
 
Chri

Chri

Fortgeschrittenes Mitglied
Shinigami schrieb:
Diese Klasse hat mit Activities nichts zu tun und kann daher auch nicht über Intents aufgerufen werden sondern wird in der TabActivity instanziiert.
Ich glaube schon, dass sie etwas mit Activities zu tun hat, weil ansonsten kann ich den Parser ja garnicht ausführen!

mfg
 
S

Shinigami

Gast
Hi.

Bin leider nur mit meinem G1 on, daher nur ne kurze Antwort:

Ich würde von Tab 1 aus einen Thread starten worin der Download und das Parsen stattfindet. Solange dieser Thread läuft würde ich den Tab mit einem PopUp "überlagern" der auch dem User zeigt, das was im Gange ist. Wenn der Thread fertig ist die Daten an die TabActivity übergeben und das PopUp wegblenden. Sollte der User schon bevor er den Download überhaupt ausgelöst hat auf Tab2 wechseln muss darin halt eine entsprechende Meldung angezeigt werden, was du durch das Fehlen der Daten aus Tab 1 ja ohne Weiteres feststellen kannst.

Grüße,
Shini
 
Chri

Chri

Fortgeschrittenes Mitglied
Uh, das klingt ja so richtig kompliziert!!!
Ich habe nämlich keine Ahnung von Threads oder Popup fenstern!
Aber würde ich dann nicht wieder auf das Problem Stoßen, dass ich die Daten vom Thread mit dem Parsern an die TicketList übergebe?

mfg
 
Chri

Chri

Fortgeschrittenes Mitglied
So!, habs jetzt so gelöst, dass es für meine Zwecke funktioniert:D
Ich habe den Login und Downloadvorgang in eine neue Klasse gepackt und Instanzen davon in meiner Klasse gemacht, in der ich die Tabs definiere!
Den Parser habe ich in der ListActivity realisiert(nur den Ablauf) und die ListActivity wird bei jedem Mal, wenn ihr Tab angeklickt wird neu ausgeführt! (So kann sich die Liste auf dem Server auch unter der Anwendung relisieren und man muss das programm nicht neu starten!)

Ich möchte mich sehr herzlich bei den Beteiligten dieses Threads bedanken! Ihr habt mir wirklich sehr weitergeholfen und ich hoffe, dass ich weiterhin auf eure Hilfe zählen kann!

mfg Chri
 
S

swordi

Lexikon
na super, wenns jetzt klappt ;)
 
S

Shinigami

Gast
Chri schrieb:
Ich möchte mich sehr herzlich bei den Beteiligten dieses Threads bedanken!
Dafür gibt's sogar nen Button *pfeif* :D

Grüße,
Shini

P.S.: Was macht Deine App eigentlich?
 
Chri

Chri

Fortgeschrittenes Mitglied
Sachen vom Server downloaden (bitte neuen Thread beachten ;))
und dann in einer Liste anzeigen. Ist so ne Art Aufgabenliste!

mfg
 
Ähnliche Themen - Daten aus einem ArrayList lesen Antworten Datum
17