Listview-layout gleich, jedoch Content unterschiedlich. Wie geht das?

  • 10 Antworten
  • Letztes Antwortdatum
T

Tosten

Neues Mitglied
0
Hey Leute,

Ich habe mittels Viewpager und Viewpager-Adapter eine vielzahl an Fragments mit einem bestimmtem Layout erstellt. Das Layout ist immer identisch und beinhaltet Listviews. Der Viewpager dient dazu durch Tage durchzuscrollen.

Nun möchte ich das ich mittels Click auf einen Button (den ich im Viewpager-Layout integriert habe) ein bestimmter Content in die Listviews eingetragen wird die aktuell angezeigt wird. Das Problem ist das ich jetzt aktuell nur den Content in die "start" Listview und nicht in die anderen integrieren kann.

Kann ich irgendwie die IDs der Listviews an die Tage koppeln und dann dem Button sagen, das er nur an das aktuelle Listview die Daten senden soll?

Ich hoffe ich konnte es einigermaßen verständlich beschreiben !

mfg Tosten :unsure:
 
1. Fragment in das du die Listview lädst...
2. Einen View container darüber schweben lassen und dort die listview reinladen...
 
Oh Hey, danke für die überaus schnelle Antwort :) ich finde es bemerkenswert wie schnell hier geantwortet wird !

Deine Antwort hat mir quasi das bestätigt was ich vermutet habe.

Zu 1. & 2.) Das Fragment in dem ich die Listviews definiere habe ich schon. D.h ich könnte theoretisch einen vordefinierten Content in jede Listview packen. Das will ich aber nicht. Mein Content soll erst später in die jeweilige Listview. Nur weiß ich ja nicht wie ich sie nach dem erstellen wieder anspreche..

Aktuell weiß ich nur nicht so recht was ich mit der Viewgroup (falls du die gemeint hast) anfangen soll und wie ich dort die Views bzw. die Layouts hineinbekomme. Hab damit noch nicht so sonderlich viel Erfahrung. So ein paar Leitpunkte wären schon hilfreich. Ich brauch jetzt keinen vollständigen Code oder sowas.. nur damit ich weiß wonach ich suchen muss :)


Danke schon mal für eure Mühe(n) !

mfg Tosten
 
Du könntest ja die Google Doku für die Viewgroups API studieren.

Mit den Methoden kannst du deine Contents in Code aufbauen statt in XML und so baust du erstmal alles auf und packst es dann als Content rein.

Natürlich sollte man möglichst wenig in Code in dieser Richtung machen und nur das wirklich notwendige das dynamisch sein soll dann bearbeiten, heißt einige Eckpunkt die ja eh feststellen schon mal in xml definieren(größe, margins paddings) und dann halt dsas was sich während der runtime ändern soll im Code deklarieren und als Content setzen wenn es fertig ist.
 
Hallo,

danke für die schnelle Unterstützung. Habe deine Tipps beherzigt und habe es tatsächlich geschafft in eine bestimmte View etwas bestimmtes einzutragen ! Wahnsinn..

Ich habe aber noch ein anderes Problem in meinem Programm. Ich erzeuge ja viele verschiedene Fragments für den Viewpager. Nun erzeuge ich aktuell aber immer ein neues Fragment:

public Fragment getItem(int position) {

bundle.putString("date", list.get(position));

Fragment testFragment = new Fragment();
testFragment.setArguments(bundle);

return testFragment;
}

Gibt es eine Möglichkeit wie ich irgendwie die Fragments "speichere" und dann sage das sie wieder "geladen" anstatt neu erstellt werden sollen?

Das ist so eine Sache wo mir nicht mal ansatzweise irgendwelche Punkte zu einfallen wonach ich suchen soll oder kann :sad:

Bin für alle Ideen, Vorschläge und Anregungen offen :)

danke für eure Mühen!

mfg Tosten
 
Hallo, hier gilt wie so oft, dass viele Wege nach Rom führen ;-)
Möglichkeit 1: mittels new Fragment xyz könntest du ein neues Fragment erzeugen (zb jedesmal in onResume). Änderungen werden dann natürlich nur angezeigt wenn der zugrunde liegende Datensatz verändert wurde. Ich halte diese Möglichkeit für eher stümperhaft und teilweise problematisch, da die Position der zuletzt angezeigten Einträge verloren geht. Die Liste ist mit der Ansicht "on Top". ABER es mag Fälle geben wo diese Implementierung Sinn macht und es dementsprechend auch nicht stümperhaft ist, teilweise vielleicht sogar aus Sicherheitsgründen die einzig kluge Entscheidung (muss ja nicht immer angeraten sein Daten zwischenzuspeichern) . Das wirst du selbst entscheiden müssen.
Möglichkeit 2 (meiner Meinung sinnvoller): notifyDatasetChanged() aufrufen. Wichtig: wenn man die Liste aus einer anderen activity modifiziert (zB sortiert, Einträge löscht, hinzufügt etc) ist uU ein Broadcast notwendig um die Veränderung in der Liste "bekannt zu machen".
 
Danke für die schnelle Antwort :)

Mit notifyDatasetChanged() aktualisiere ich ja (nur?) eine Listview speziell. Das benutze ich auch schon damit mir überhaupt mein Eintrag in der Listview angezeigt wird.

Die Frage ist ja jetzt, wie ich meinem Programm sage das ich anstelle eines neuen frischen unbenutzen Fragments ein Fragment "lade" in dem schon Daten enthalten (z.B. aus einer Listview) sind oder anders, wie ich in einem neuen Fragment die alten daten importiere. Oder meintest du das damit? Kann ich das mit dem selben Befehl?

Weil wenn ich immer ein neues Fragment erzeuge (was ich ja mache) bringt mir notifyDatasetChanged() ja nichts, da ich ja in dem jeweiligen neuen Fragment noch nie was eingetragen habe, da ich ja durch scrollen durch den Viewpager immer neue erstelle bzw sogar überschreibe.

Hach.. irgendwie ist das schon kompliziert zu beschreiben.. ich hoffe man blickt irgendwie durch.. :huh: :confused2:
 
Dann muss man die daten eben serialisieren und in files specihern bzw. irgendwie in die sharedprefs packen

Der ursprüngliche Beitrag von 12:02 Uhr wurde um 12:03 Uhr ergänzt:

eine json datei schrieben und wieder auslesen
 
So wie ich die Sache aus der Ferne einschätze, hört sich das fast nach einem lifecycle Problem an. Wenn du in onResume ein "new" stehen hast, wäre das unvorteilhaft für deine Liste(n) bzw würde das eine unerwünschte Neuerstellung erklären.
Ich habe es immer so gehandhabt, dass ich in onCreate die Liste initialisiere und dann die Aktualisierung via notifyDatasetchanged (bzw mithilfe von Broadcast-Receivern) durchgeführt wird.
Was ebenfalls Probleme verursachen kann, ist den Datensatz zu kopieren (zb wenn man ihn sortiert).
Im Zweifel mal ein paar Zeilen auskommentieren und schauen was passiert oder (wahrscheinlich zielführender, aber mit etwas "pain in the ass") mit dem Debugger das Programm checken, oder etwas vom Code posten. Aktuell fehlen (mir zumindest) ein bisschen die Informationen, um den Fehler einzugrenzen.
Jaiels Vorschlag wäre auch eine Idee um das Programm leichter nachvollziehbar zu machen (aber hier nicht zwingend notwendig um die Liste upzudaten, daher bringt es uU noch mehr Verwirrung).
 
ich ahb gedacht er meinte fragmente aus früheren applikationszuriffen zu laden
 
Ach so.. Dann hab ich vielleicht auch was verrafft :p jo so würde es Sinn machen :)
 
Zurück
Oben Unten