1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

ListView neue Elemente, wenn man das Ende der List erreicht

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von KaNuNSuZ_oFLu, 24.07.2012.

  1. KaNuNSuZ_oFLu, 24.07.2012 #1
    KaNuNSuZ_oFLu

    KaNuNSuZ_oFLu Threadstarter Neuer Benutzer

    Beiträge:
    14
    Erhaltene Danke:
    0
    Registriert seit:
    17.06.2012
    Hallo,

    ich habe eine Frage. Und zwar habe ich eine Activity in der sich eine ListView befindet.. Ich habe in der List mehrere Elemente. Möchte sie aber nicht alle auf einmal anzeigen, sondern erst die obersten 20 oder so.. Und wenn man das Ende der Liste erreicht, sollen weitere 20 Listenelemente geladen werden.. Habe da zwar einige Tutorials im Internet gefunden. Verstehe aber nicht wie ich sie anwenden soll.. Da die meisten auf eine ListActivity basieren..
     
  2. swordi, 24.07.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ob listactivty oder nicht spielt aber dafür mal überhaupt keine rolle
     
  3. KaNuNSuZ_oFLu, 26.07.2012 #3
    KaNuNSuZ_oFLu

    KaNuNSuZ_oFLu Threadstarter Neuer Benutzer

    Beiträge:
    14
    Erhaltene Danke:
    0
    Registriert seit:
    17.06.2012
    nach langer Arbeit habe ich es nun soweit hinbekommen, dass ich am Ende der Liste neue Listenelemente lade.. Habe aber das Problem, dass meine View dann wieder ganz hoch scrollt.. also ich sehe die Liste wieder von vorne und nicht von der Stelle, wo ich stehengeblieben bin.. Sprich: ich lade anfangs 20 listenelemente.. soweit alles gut.. scrolle runter und wenn ich dann am ende der liste bin erweitere ich meine Liste um weitere 20 Elemente.. Das mache ich mit einer for schleife.. habe eine NodeList vom XMLParser.. die For-Schleife holt sich dann 20-40-60 Knoten von der Liste und fügt sie einer HashMap hinzu.. die Hashmap wird in einer ArrayList gespeichert.. Mit der ArrayList wird dann ganz zum schluss, wenn ich 20 bzw 40 bzw 60 elemente geladen habe, ein neuer Adapter erstellt (LazyAdapter)..

    Code:
    adapter=new LazyAdapter(this, newsList);        
    list.setAdapter(adapter);
    
    wie gesagt funktioniert soweit auch nur es scrollt ganz hoch.. sprich um das 21. Element der Liste zu sehen muss ich WIEDER runter scrollen.. sobald das 20. Element sichtbar ist ladet er die neuen einwandfrei. Es soll ja dann einfach die neuen Elemente hinzufügen, aber genau das passiert dann nicht.. Es ist nicht so, dass das bild stehen bleibt und die Liste um neue elemente ergänzt wird.. sondern es ist so, dass die Liste NEU ERSTELLT wird diesmal halt mit 40/60/80 Elementen.. und die Liste wird von vorne angezeigt.. kann ich das irgendwie verhindern? Also es soll so sein, dass ich die Liste ergänze und nicht komplett neu erstelle..
     
  4. DieGoldeneMitte, 27.07.2012 #4
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Du könntest dem ListView sagen, wo er hinscrollen soll.
     
    KaNuNSuZ_oFLu bedankt sich.
  5. swordi, 27.07.2012 #5
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    wenn du den adapter neu der listview setzt, wird auch die position zurückverschoben.

    korrekt ist folgender ablauf:

    *) Listview adapter setzen
    *) Daten laden
    *) Daten dem adapter geben
    *) notifydatasetchanged aufrufen

    alles funktioniert :D
     
    KaNuNSuZ_oFLu bedankt sich.
  6. KaNuNSuZ_oFLu, 14.08.2012 #6
    KaNuNSuZ_oFLu

    KaNuNSuZ_oFLu Threadstarter Neuer Benutzer

    Beiträge:
    14
    Erhaltene Danke:
    0
    Registriert seit:
    17.06.2012
    besten Dank an euch beide :) Hat so gefunzt wie swordi es gesagt hat
     

Diese Seite empfehlen