Массив становится неинициализированным после установки его из внутреннего класса - PullRequest
0 голосов
/ 22 сентября 2019

В примере кода я прокомментировал два оператора 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;
    }
}
...