2011-09-05 11 views
8

के माध्यम से Iterating के लिए कोई मुहावरे है, मैं तेजी से लुकअप टेबल के रूप में उपयोगकर्ता नामों की सूची के खिलाफ अद्वितीय int आईडी की एक सूची का उपयोग कर रहा हूं और स्पैसएरे का उपयोग करने का फैसला किया है, लेकिन मैं प्रिंट करने में सक्षम होना चाहता हूं डीबगिंग उद्देश्यों के लिए समय-समय पर पूरी सूची लॉग करें।एंड्रॉइड: क्या स्पैर्सएरे

SparseArray iterable नहीं है और util.Map इंटरफ़ेस

+0

(जवाब के साथ) इसी प्रकार के प्रश्न पाया जा सकता है [यहां] (http://stackoverflow.com/questions/7999211/iterate-through-sparsearray/8006994#8006994) इस समाधान के लिए कुछ और स्पष्टीकरण के साथ – Wasky

उत्तर

4

उपयोग SparseArray.size() कुल आकार पाने के लिए की तरह नहीं है।

SparseArray.keyAt और value का उपयोग करें दिए गए इंडेक्स में कुंजी/मान प्राप्त करने के लिए।

+2

उदाहरण यहां: http://stackoverflow.com/a/8006994/579234 – Sogger

14

चूहे सही था, कोड इस तरह कुछ दिखाई देगा;

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

यहां टिप्पणियों में इस समाधान पर अधिक स्पष्टीकरण: http://stackoverflow.com/a/8006994/579234 – Sogger

0

डीबग निशान के लिए स्पैर्सएरे सामग्री को प्रदर्शित करने का तरीका यहां बताया गया है।

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(); 
} 
संबंधित मुद्दे