ListView med ArrayAdapter<Object> laggar enbart i ICS?

Discussion in 'Frågor, support och diskussion' started by Musenkishi, Feb 10, 2012.

  1. Musenkishi

    Musenkishi Youth Droid Medlem

    Joined:
    Nov 26, 2009
    Messages:
    100
    Likes Received:
    16

    MINA ENHETER

    Tjena! :)

    Jag sitter med ett problem som ger mig huvudvärk för jag kan inte hitta någon lösning med mina google skills...
    Saken är att jag har en ListView som hämtar sin data från en custom adapter som är en utökning av ArrayAdapter<Object> som implementerar SectionIndexer för att visa bokstäver när man snabbscrollar. Listan har runt 1100 objekt i sig.
    Appen funkar fint på 1.6 och upp till 2.3.7 men när jag testar appen på en bekants Galaxy Nexus eller testar själv i emulatorn så laggar scrollningen något enormt! Och ibland försvinner snabbscrollen från sidan också.
    Finns det någon förklaring till varför en app med en simpel listview krånglar så mycket på Android 4.0?
    Jag är tacksam för all hjälp jag kan få!
     
  2. Zooklubba

    Zooklubba Android Medlem

    Joined:
    Jul 10, 2010
    Messages:
    6 448
    Likes Received:
    2 199

    MINA ENHETER

    Har du möjlighet att visa kod av din adapter?

    Jag har inga bekymmer med listor på min GNexus på de appar jag har testat med. Kanske inte är tillräckligt lång lista i de jag har testat.
    1100 objekt låter drygt att ha inläst, eller du kanske kör något i stil med LazyList (Läser in lite åt gången).
    Vad är det för app? Kanske kan testa i min telefon.
     
  3. b.lindahl

    b.lindahl Teen Droid Medlem

    Joined:
    Aug 20, 2009
    Messages:
    350
    Likes Received:
    9

    MINA ENHETER

    Intressant, jag har sett samma beteende, värre och värre lagg ju längre jag kommer i en list view. Jag har fått buggrapporter om problem på Galaxy Nexus också och kunde också se det på min egen GNexus. Det visar sig att jag vid tillräckligt lång lista och skrollar rätt långt i listan får Out Of Memory-exception, något jag inte får på tidigare Androidversioner. Jag har inte hunnit lägga tillräckligt med tid på att felsöka vart felet ligger. Hittar ni någon orsak till era problem vore det intressant att höra vad ni kommit fram till.
     
  4. Musenkishi

    Musenkishi Youth Droid Medlem

    Joined:
    Nov 26, 2009
    Messages:
    100
    Likes Received:
    16

    MINA ENHETER

    Nu har jag äntligen orkat ta tag i det här problemet och det verkar ha löst sig efter att jag följde den här guiden för hur en adapter ska bete sig.

    Alltså verkar Android 4.0 få slut på minne för att den kallar på findViewById() för varje getView() när den inte behöver det. Efter att jag gjorde om getView att använda en egen viewholder så kan jag scrolla utan problem.

    Jag har fortfarande ett väldigt störande problem med att fast scroll thumb sträcker sig utanför skärmen när man scrollar. Jag ska fortsätta leta efter någon lösning men om någon vet lösningen så hojta till! :)

    EDIT: Attans! Var visst jag som hade skrivit fel i koden för SectionIndexer. I getSectionForPosition(int position) returnade jag 1 istället för 0 :P
     
    Last edited: Feb 29, 2012