2011-09-05 12 views
8

Sto utilizzando un elenco di ID univoci univoci rispetto a un elenco di nomi utente come tabella di ricerca rapida e ho deciso di utilizzare lo sparseArray ma vorrei poter stampare su registrare l'intero elenco di volta in volta per scopi di debug.Android: Esiste un idioma per l'iterazione tramite SparseArray

Lo SparseArray non è iterabile e non è molto simile all'interfaccia util.Map

+0

domanda simile (con risposte) può essere trovato [qui] (http://stackoverflow.com/questions/7999211/iterate-through-sparsearray/8006994#8006994) – Wasky

risposta

4

Usa SparseArray.size() per ottenere dimensione totale.

Utilizzare SparseArray.keyAt e valueAt per ottenere la chiave/valore in un determinato indice.

+2

Esempio con un po 'di spiegazione per questa soluzione qui: http://stackoverflow.com/a/8006994/579234 – Sogger

14

I mouse erano corretti, il codice sarebbe simile a questo;

for(int i = 0; i < sparseArray.size(); i++){ 
    int key = sparseArray.keyAt(i); 
    Object value = sparseArray.valueAt(i); 
} 
+1

Ulteriori spiegazioni su questa soluzione nei commenti qui: http://stackoverflow.com/a/8006994/579234 – Sogger

0

Ecco come visualizzare un contenuto di SparseArray per le tracce di debug.

public static String sparseArrayToString(SparseArray<?> sparseArray) { 
    StringBuilder result = new StringBuilder(); 
    if (sparseArray == null) { 
     return "null"; 
    } 

    result.append('{'); 
    for (int i = 0; i < sparseArray.size(); i++) { 
     result.append(sparseArray.keyAt(i)); 
     result.append(" => "); 
     if (sparseArray.valueAt(i) == null) { 
      result.append("null"); 
     } else { 
      result.append(sparseArray.valueAt(i).toString()); 
     } 
     if(i < sparseArray.size() - 1) { 
      result.append(", "); 
     } 
    } 
    result.append('}'); 
    return result.toString(); 
} 
Problemi correlati