MenuList schneller füllen

  • Ich habe eine MenuList mit vielen Einträgen (bis zu 1000) - da dauert das Anzeigen der Liste sehr lange (mehrere Sekunden auf meiner DM7020HD).


    Im Moment mache ich folgendes:

    Code
    current_episodes_list = []
    for episode in data["episodes"]:
         title = episode["title"].encode("utf-8")
         otitle = episode["otitle"].encode("utf-8")
         current_episodes_list.append([episode["season"], episode["episode"], episode["tv"], episode["url"], title, otitle])
    
    
    
    
    self.chooseMenuList.setList(map(buildList_episodes, current_episodes_list))


    Wobei self.chooseMenuList die MenuList ist.
    Die Liste besteht aus Text und Grafiken die mit loadPNG geladen werden.


    Meine Idee war jetzt, damit der Benutzer nicht auf den leeren Screen starren muss und dann irgendwann, Plopp, alle Einträge auf einmal da sind, quasi die Liste nach jedem Eintrag zu refreshen. Allerdings scheitere ich daran, kann hier jemand einen Tipp geben wie ich das elegant lösen kann?!


    MacDisein

  • Dafür nimmt man die eListbox, das ganze kombiniert mit einer buildfunc, und läd dadurch die Bilder erst, wenn sie angezeigt werden sollen, sprich in der buildfunc-Methode. Je nach Größe dieser Bilder würde ich die asynchron laden mit dem ePicload, damit nichts blockiert beim schnellen durchblättern der Liste.
    Auf jeden Fall solltest Du die Bilder nicht cachen bei so einer Anzahl von Items, da geht dir schneller der RAM aus als Du schauen kannst :winking_face:

  • Naja, Bilder ist vielleicht etwas übertrieben, es sind mehr Icons (Haken, Kreuz, TV Symbol usw.) die sind recht klein.
    Ich habe jetzt auch schon gestern versucht den Rat von dhwz zu versuchen und habe das setList einfach mal in meine for Schleife verschoben mit dem Erfolg, dass die Box minutenlang blockiert war, bis dann irgendwann der neue Screen angezeigt wurde. Also irgendwie wird zwischendurch die CPU nicht freigegeben um die Anzeige zu aktualisieren - es muss also irgendwie asynchron ablaufen.
    Das mit der eListbox gucke ich mir mal - da finde ich sicher irgendwo ein Beispiel.