Я использую следующий запрос:
db.collection("Example")
.whereEqualTo("UserId", currentUser.getUid())
.orderBy("timestamp", Query.Direction.ASCENDING)
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()){
for (QueryDocumentSnapshot document : task.getResult()){
Log.i(TAG, "onComplete: " + document.get("UserId") + " => " + document.get("userText"));
userIdArrayList.add(document.get("UserId").toString());
userTextArrayList.add(document.get("userText").toString());
}
}else{
Log.i(TAG, "onComplete: Error getting documents", task.getException());
}
}
});
Поскольку запрос повторяется в результатах, я бы хотел добавить результаты в массив. Однако, когда я запускаю код и пытаюсь напечатать содержимое списка массивов, я получаю исключение IndexOutOfBounds
, несмотря на то, что смотрю на userTextArrayList.get(0);
, который должен содержать результат. Я добавил строку Log.i
, чтобы проверить, успешно ли выполняется код, и я вижу в Logcat, что данные извлекаются из базы данных. По какой-то причине этот код не добавляет результаты в ArrayList.
Я не уверен, что еще можно попробовать, и я не могу найти что-либо в документации, которая может помочь мне в том, куда я потенциально попал неправильно.
Пожалуйста, не стесняйтесь указывать мне на документацию, которая может помочь в решении проблемы, если предоставление ответа слишком много. Я ценю любое руководство, которое может дать любой.
Спасибо!
Редактировать: Я получаю сообщение об ошибке в следующих строках кода:
userIdArrayList.add(document.get("UserId").toString());
userTextArrayList.add(document.get("userText").toString())
По некоторым причинам эти строки не добавляют данные в массив, и когда я пытаюсь напечатать массив позже в коде (то есть Log.i(TAG, "User Text => userTextArrayList.get(0).toString());
), я получаю и ошибка для IndexOutOfBounds
- очевидно, ArrayList не содержит данных, несмотря на то, что приведенный выше код добавляет данные в ArrayList.