Item einer ArrayList in eine 2. ArrayListe adden

  • Hallo liebe Community,


    Ich komme derzeit leider bei meiner Arraylist nicht weiter. Und zwar würde ich gerne ein Item von der einen ArrayList in die andere verschieben.
    Die andere Liste ist allerdings in einer anderen Activity. Desweiteren speichert der Adapter die Änderungen nicht. Sprich wenn ich ein Item rauslösche (was ja schon mal geht :D"
    und die App neustarte, dann erschein das Item wieder da wo es vorher war.


    Das ist mein Code soweit:


  • hallo habe mir dein Problem noch mal durch gelesen.
    Wie und wo speicherst du den deine Liste? In einer SQL , Datei oder ...
    Der Adapter speichert die Liste nicht das musst du schon selber machen.
    Beim neustart der app werden ja wieder die gleichen daten aus der Datei gelesen und dein arryliste damit geladen.
    Der Zugriff auf deine zweite Liste in der neuen activity wird so auch nicht gehen.
    recipeList2.add(selectedRecipe) denke das soll sei zweite Liste sein. Nur das es die zur Laufzeit nicht giebt da andere activity.
    Eine Lösung wäre die Liste global und static zu deklarieren. Und dann so aufrufen app2. recipeList2.add(selectedRecipe)

  • so Habe dir etwas zusammen gestellt so wie ich es mache mit Listen ist nur ein Beispiel




    So habe dir etwas zusammen gestellt so wie ich es mache.
    Classe Activity

    Classe für deine Daten

    Classe für den Adapter .



    Das Layout für die MainActivity hier "test" must du noch erstellen
    ebenfals das Layout für die customListe . Das ganze soll nur als Grundgerüst dienen.
    somit solte dein erste Frage nach einerCustem List View auch beantwortet sein
    wie du in meinen Code sieht speichere ich es in ein SQL. finde ich einfacher und fexsibler als mit Datein.


    hoffe es hilft weiter.

  • Danke erstmal werde das mal ausprobieren.


    Allerdings habe ich bereits den Custom Adapter in meinem Fall heißt er "RecipeAdapter".


    Und die Daten werden in einer JSON Datei gespeichert. Hatte jetzt eigentlich nur nach einer Lösung gesucht für das hinzufügen des Eintrages in eine andere Liste:


    Der Rest hat ja funktioniert :)

  • Ich hab es jetzt geschafft, dass er bei meinem code die 2. Liste erkennt:


    MainActivity Class:



    TestActivity.class




    Allerdings bekommt er bei der Mainactivity bei "TestActivity.recipelist2.add(selectedRecipe)" einen Fehler und zwar:
    "add "com.alltherecipes.Recipe2" cannot be applied in Arraylist to "com.alltherecipes.Recipe""

  • wieso Deklarirst du in zeile 4 und 11 die gleiche Varialbe recipeList2 ?
    zur laufzeit ist deine Variable zwar Deklarirt aber ihr sind keine wetrete zugewiesen.


    So wird das auch nicht gehen. Speichere die Daten vor benden der Activity in deine Date , benutze am besten zwei Datein.
    Lese die Daten beim Start der Activity wieder ein und das in beiden Activitys.

  • Ich deklariere sie 2 mal weil sie sonst nicht von der ersten Activity erkannt wird.
    Also TestActivity.recipeList2.add(selectedRecipe) erkennt die recipeList2 nur wenn sie außerhalb von onCreate deklariert wird.


    Aber es kommt halt "add "com.alltherecipes.Recipe2" cannot be applied in Arraylist to "com.alltherecipes.Recipe"" weil eben keine Werte zugewiesen sind, weil ich nicht weiß wie ich das mache.


    Ok klingt logisch ... und wie mach ich das? :D

  • Ich weiß ja nicht wie ich sie benutze. Sprich wie ich es hinbekomme, dass der Eintrag von Liste 1 zu Liste 2 verschoben wird.


    Und das Speichern kommt ja noch hinzu aber erstmal muss ich ja das eine schaffen um mich um das andere Problem kümmern zu können.

  • Denke du must dich erst noch mal mit den Grundkenntnissen von Java vertraut machen. Deklaration und inizaliren von variablen Objekten. Schaue dir an was statige ist. Dies bedeutet du brauchst davon keine instans erzeugen. Du bringst einiges durcheinander. Öffnen und auslesen eine Datei kanst du ja schon dann schau die an wie du daten in die Datei schreibst.

  • Ich hab mir das schon alles durchgelesen ich weiß allerdings immer noch nicht wieso er bei diesem Code "selectedRecipe" unterstreicht. Bzw ich weiß es schon. Weil die "recipeList2" "Recipe2" nutzt und nicht "Recipe" aber ich weiß nicht wie ich das lösen kann.


  • wo hast du diesen Code denn her? Wo wird recipeList2 deffiniert. Ich meine in welcher Klasse.
    Dir ist schon bewusst das jede activity eine eigene Klasse ist. Weißt du wie du auf ein Objekt einer anderen Klasse zugreifst?
    Schaue dir objektorientierte Programmierung noch mal an merke das du da noch Lücke hast.
    Die Fehlermelung heißt er kann nicht auf das Objekt zugreifen. Es ist ja auch in einer anderen Klasse.
    Wenn du eine activity beendest oder über einen intent eine neue startest wird der Speicher der alten zurückgegeben zerstört. Somit ist recipeList2 in der oncraete nicht vorhanden. Außer die static variable . Diese ist zwar definiert das heißt dem System bekannt aber ihr wird nichts zugewiesen somit auch kein Speicher vergeben. Dies sollte erst mal klar sein.

  • mache eine neue Klasse erstelle dort deine beiden listen.
    Erzeuge in der Kasse Aktivität eine Instanz von dieser. Und arbeite mit dieser weiter.


    Oder erstelle in der neuen Klasse die listen static dann brauchst du keine Instanz.
    Somit kannst du von beiden activitys darauf zugreifen.
    Ps. Versuche Code bitte selber zu Schreiben da vertehst du es auch besser. Das ist nicht böse gemeint. Du lernst soviel mehr Glaube mir. Es hilft nicht viel wenn ich die den Code komplett schreibe. Ich möchte das du den Zusammenhang verstehst.

  • schaue mal hier

    Externer Inhalt youtu.be
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!