2011-09-05 11 views
8

私は、高速ルックアップテーブルとしてユーザー名のリストに対して一意のint idのリストを使用していますが、sparseArrayを使用することに決めました。デバッグの目的で、時々リスト全体をログに記録する。Android:SparseArrayを反復するためのイディオムがありますか?

はSparseArrayは反復可能ではなく、全体のサイズを取得するためのutil.Mapインターフェース

+0

(答え)同様の質問を見つけることができます。このソリューションのためのいくつかのより詳細な説明では[こちら](http://stackoverflow.com/questions/7999211/iterate-through-sparsearray/8006994#8006994) – Wasky

答えて

4

利用SparseArray.size()のようにあまりないです。

SparseArray.keyAtとvalueAtを使用して、指定されたインデックスのキー/値を取得します。

+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

デバッグトレースのSparseArrayコンテンツを表示する方法は次のとおりです。

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(); 
} 
関連する問題