我正在尝试使用arraylist.get(2);
通过键来获取特定的索引值,但是失败了,而且还会引发异常。
“ IndexOutOfBoundsException:无效的索引2,大小为1”
我的阵列列表的大小为3(0-2)。
下面是我的方法代码:
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
//add keys to arraylist
String key=dataSnapshot.getKey();
arraylist.add(key);
//it displays found indexes as 0, 1, 2
int index= arraylist.indexOf(key);
Log.i("indexs", String.valueOf(index));
//it displays exception, but when I replace "2" with "0" then,
//it prints one value four times which lie on index "1"
String specificIndexValue = arraylist.get(2);
Log.i("IndexValues", specificIndexValue);
}
答案 0 :(得分:1)
第一次调用onChildAdded
时会出现一个异常,因为arraylist
仅包含1个项目,并且您正在访问索引2,而该列表中需要3个或更多项目。
String specificIndexValue = arraylist.get(2);
我们将需要更多信息来解决您的问题it prints one value four times which lie on index "1"
。
似乎您可能希望将其存储在有序映射中而不是数组中,该键是快照键,而值是快照。
尝试此调试...
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
//add keys to arraylist
String key=dataSnapshot.getKey();
arraylist.add(key);
if (arraylist.size() == 3){
Log.i("Key: " arraylist.get(2), "Index: 2");
}
}