私は、高速ルックアップテーブルとしてユーザー名のリストに対して一意のint idのリストを使用していますが、sparseArrayを使用することに決めました。デバッグの目的で、時々リスト全体をログに記録する。Android:SparseArrayを反復するためのイディオムがありますか?
はSparseArrayは反復可能ではなく、全体のサイズを取得するためのutil.Mapインターフェース
私は、高速ルックアップテーブルとしてユーザー名のリストに対して一意のint idのリストを使用していますが、sparseArrayを使用することに決めました。デバッグの目的で、時々リスト全体をログに記録する。Android:SparseArrayを反復するためのイディオムがありますか?
はSparseArrayは反復可能ではなく、全体のサイズを取得するためのutil.Mapインターフェース
利用SparseArray.size()のようにあまりないです。
SparseArray.keyAtとvalueAtを使用して、指定されたインデックスのキー/値を取得します。
例ここでは:http://stackoverflow.com/a/8006994/579234 – Sogger
マウスが正しいとしたら、コードは次のようになります。
for(int i = 0; i < sparseArray.size(); i++){
int key = sparseArray.keyAt(i);
Object value = sparseArray.valueAt(i);
}
コメントのこのソリューションに関する詳しい説明はこちら:http://stackoverflow.com/a/8006994/579234 – Sogger
デバッグトレースの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();
}
(答え)同様の質問を見つけることができます。このソリューションのためのいくつかのより詳細な説明では[こちら](http://stackoverflow.com/questions/7999211/iterate-through-sparsearray/8006994#8006994) – Wasky