Autore Topic: ListView e ordine oggetti non concorda con position  (Letto 318 volte)

Offline Melanogaster

  • Utente normale
  • ***
  • Post: 260
  • Respect: +11
    • Mostra profilo
  • Dispositivo Android:
    SII
  • Sistema operativo:
    Kubuntu
ListView e ordine oggetti non concorda con position
« il: 10 Novembre 2013, 16:23:47 CET »
0
Ciao a tutti,
purtroppo non ricordo piu' come risolvere questo tipo di problema che un tempo mi sarebbe sembrato banale ma, avendo sospeso per un po' di tempo la programmazione Android, oggi ritorna a non esserlo :)

Ho un ArrayList<HashMap<String, String>>, all'interno del quale ogni HashMap e' cosi' formato:
Codice: [Seleziona]
{
"tipo" => "IMMAGINE"
"..." => "..."
}

Ho quindi esteso un SimpleAdapter con una getView simile a questa:
Codice (Java): [Seleziona]
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
HashMap<String, String> hmObject                =       (HashMap<String, String>) super.getItem( position );
if (hmObject.get("tipo").equals("IMMAGINE"))
// istanzio un'ImageView
else
// Istanzio una TextView

return oggetto_istanziato;
}
Il problema e' che in caso di molti oggetti dopo alcuni scroll della ListView non vi e' corrispondenza tra quello che ci dovrebbe essere e quello che viene mostrato, mostrando magari un'ImageView dove avrei dovuto restituire una TextView.

Ricordo che come problema era abbastanza comune ma purtroppo, non sapendo come ricercarlo su Google, mi affido a voi :)

Offline Melanogaster

  • Utente normale
  • ***
  • Post: 260
  • Respect: +11
    • Mostra profilo
  • Dispositivo Android:
    SII
  • Sistema operativo:
    Kubuntu
Re:ListView e ordine oggetti non concorda con position
« Risposta #1 il: 11 Novembre 2013, 10:36:10 CET »
0
Nessuno? :)

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:ListView e ordine oggetti non concorda con position
« Risposta #2 il: 11 Novembre 2013, 10:52:41 CET »
0
Potrebbe dipendere dal fatto che le ListView riciclano gli item man mano che alcuni escono dalla visuale e altri ne entrano. Questo impone una corretta gestione degli item, altrimenti accade che nuovi item assumono caratteristiche che avevi impostato nei vecchi (per il riciclo delle view).

Una implementazione corretta è nel tutorial di Ricky sui custom adapter.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Melanogaster

  • Utente normale
  • ***
  • Post: 260
  • Respect: +11
    • Mostra profilo
  • Dispositivo Android:
    SII
  • Sistema operativo:
    Kubuntu
Re:ListView e ordine oggetti non concorda con position
« Risposta #3 il: 11 Novembre 2013, 10:54:08 CET »
0
Grazie bradipao, quel tutorial lo conosco molto bene però se dici che sbaglio l'implementazione lo studierò meglio nelle sue varie parti :)

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:ListView e ordine oggetti non concorda con position
« Risposta #4 il: 11 Novembre 2013, 10:55:07 CET »
0
sicuramente sbagli come implementi il riciclo delle view.
Non è banalissimo come problema nel caso di view diverse, ma è pieno di topic, codici di esempio e post di blog sul web
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia