Übergabe großer Datenmenge an andere Activity, wie macht ihr das?

  • Hi AD-Community, ich hätte mal eine Frage die mich schon seit längerem quält. Auch bei meinem neuen Projekt bin ich wieder auf diese Frage gestoßen. Wie übergebt ihr große Datenmengen, nehmen wir mal an eine Liste > 10.000 entries an die nächste Activity?


    Konkret: Ich habe aus einer XML Datei einen Datensatz/Liste(gefüllt mit einem eigenen Objekt/Klasse) erstellt aus der ich mir in der ersten Activity einen zufälligen Eintrag herausnehme.
    In der zweiten Activity soll nun eine Liste aller Daten angezeigt werden. Also lese ich die XML in der zweiten Activity neu ein, was ich als irgendwie schwachsinnig empfinde da ja so eine Liste schon besteht! Wird ein Eintrag der ListView selected zeige ich noch detailierte Informationen zu dem Eintrag, welchen ich aber über einen intent/intent.put weiterleite. Nur leider funktioniert das ja nicht mit einer Liste.
    Wie stellt ihr sowas an? Übrigens das selbe hab ich auch schonmal aus einer Datenbank gemacht also 2 mal Hashmap aus einer Datenbank erzeugt, was auch "dumm" ist.


    Danke Euch!
    Gruß Soma

  • Hi Somaweb,


    wenn ich zum Beispiel den Inhalt einer XML von einem Server geladen habe um den Inhalt dann in verschieden Activities anzuzeigen habe ich bis jetzt meist eine static Klasse benutzt. Also Inhalt in der Static gespeichert und dann aus den verschieden Activities drauf zu greifen.



    mfg Titus

  • Titus, danke für die Antwort. Aber nenn mich jetzt mal bitte den größten Boon, aber wie machst du das.
    Ist das nicht so, dass wenn du eine Instanz einer Klasse erzeugst diese sich immer "neu aufbaut"? Oder bin ich da total auf dem holzweg?


    Wäre cool, wenn du mir das kurz erläutern könntest.
    Hier mal kurz ein Pseudocode:
    Eigene Klasse




    Activity1

    Java
    onCreate()
    {
     super...
     setContentView..
     Name nameHandler = newe Name();
     ArrayList Names = nameHandler.getArrayList;
    }



    Activity2

    Java
    onCreate()
    {
     super... 
     setContentView..
     Name nameHandler = newe Name();
     ArrayList Names = nameHandler.getArrayList;
    }


    Wird dann nicht trotzdem der Parser wieder 2-mal (Activity1 und Activity2) angeworfen und die Daten 2 mal neu eingelesen?
    Anscheinend hab ich da ein kleines Verständnisproblem. Aber Vielen Dank für die Hilfe!
    P.s. ich hoffe das mit dem Pseudocode ist einigermaßen verständlich?

  • Hi Somaweb,


    Zitat

    Ist das nicht so, dass wenn du eine Instanz einer Klasse erzeugst diese sich immer "neu aufbaut"?


    Bei dem "normalen" Klasse-Instanze-Verhältnis stimmt das auch so, nur bei "Static Klassen" erzeugst du kein Instanz der Klasse. Einfach ausgedrückt arbeitest mit der Klasse selbst.


    Einwenig Hintergrundwissen:
    Java ist auch eine Insel - Statische Methoden und statische Attribute
    Guido Krüger - Java lernen Kapital 7


    Ok aussehen tut der ganz Spass dann so:


    die "static Klasse"


    1.activity

    Code
    onCreate{
    
    
          Name.parseXML();
          String[] tmp = Name.xmlElemente;
    
    
           //wechsel in 2.Activity
           Intent i ........
     }


    2.activity

    Code
    onCreate{
    
    
          
          String[] tmp = Name.xmlElemente;
     }



    Aber Vorsicht die Lebenszeit der Variable xmlElement ist solange wie die Lebenszeit der Applikation.


    p.s. Wiki Android Developers - Parsen einer XML mit SAX hier siehst du das ganz mal in Aktion


    mfg Titus

  • Da war wohl eine große JAVA Grundkenntniss-Lcke vorhanden die du jetzt zum Glück geschlossen hast.

    Zitat

    Aber Vorsicht die Lebenszeit der Variable xmlElement ist solange wie die Lebenszeit der Applikation.


    Heißt das das ich in meiner Activity bei onResume was machen muss?



    Wenn du schon von statischen Klassen sprichst, muss die Klasse dann nicht auch als

    Java
    public static class Namen{


    deklariert werden?


    Danke dir nochmal, wie ich sowas nur überlesen konnte :)
    P.S. JA ich benutz den SAX-Parser für externe quellen.

Jetzt mitmachen!

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