Вы создаете новый dataSnapshot.getChildren().iterator()
в каждой итерации цикла.Попробуйте просто использовать значение foreach внутри цикла:
for(DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){
i = i + 1;
names.add(dataSnapshot1.getValue(String.class));
}
Или, если вы хотите использовать итератор, сделайте это так, чтобы он создавался только один раз:
for(Iterator<DataSnapshot> it = dataSnapshot.getChildren().iterator(); it.hasNext(); ){
i = i + 1;
names.add(it.next().getValue(String.class));
}
В качестве альтернативы вы можете использовать цикл while, который в основном равен второму фрагменту кода выше:
Iterator<DataSnapshot> it = dataSnapshot.getChildren().iterator();
while(it.hasNext()){
i = i + 1;
names.add(it.next().getValue(String.class));
}