В примере кода я прокомментировал два оператора Log, каждый из которых выполняет один и тот же вызов единственного массива в коде, но второй вызов возвращает java.lang.IndexOutOfBoundsException: Index: 0, Size: 0.Помощь приветствуется.
public class DataBaseHandler {
List<User> downloadedTransporters = new ArrayList<User>();
FirebaseFirestore db = FirebaseFirestore.getInstance();
public static void setDownloadedTransporters(User user){
downloadedTransporters.add(user);
}
public List<User> getTransporters(){
final String TAG = "DatabaseActionTAG";
Log.d(TAG, "DataBaseHandler.getTransporters() confirmed");
db.collection("Users").whereEqualTo("registeredTransporter", true).get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful()){
Log.d(TAG, "Got Documents Successfuly");
int i = 0;
for(QueryDocumentSnapshot document : task.getResult()){
Log.d(TAG, document.getId() + " => " + document.getData());
DataBaseHandler.setDownloadedTransporters(document.toObject(User.class));
Log.d(TAG,downloadedTransporters.get(i).getFirstName());//WORKS
i++;
}
}else{
Log.d(TAG, "Error getting documents:", task.getException());
}
}
});
Log.d(TAG,downloadedTransporters.get(0).getFirstName());//DOESN'T WORK
return downloadedTransporters;
}
}