Я составил список объектов POJO, которые получают значения из моей базы данных Cloud Firestore.Этот список сам по себе является классом, имеющим в виду получение атрибутов каждый раз, когда я создаю новый список.Дело в том, что список заполняется не при создании, а через некоторое время.Я пытался добавить циклы, задачи, ожидания, но не получил желаемый результат.Вот как я получаю свои данные удовлетворительно:
private void retrieveData(){
reference = firestore.collection("attractions");
reference.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots,
@Nullable FirebaseFirestoreException e) {
attractionList.clear();
for (DocumentSnapshot snapshot : queryDocumentSnapshots) {
Attraction attraction = snapshot.toObject(Attraction.class);
addAttractions(attraction);
}
}
});
}
Я получаю данные каждый раз, когда создаю новый объект:
public AttractionList() {
firestore.setFirestoreSettings(settings);
reference = firestore.collection("attractions");
attractionList = new ArrayList<>();
retrieveData();
}
Затем, если я проверяю размер списка в моей активности наcreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_attraction);
Toolbar toolbar = findViewById(R.id.tb_attraction);
setSupportActionBar(toolbar);
//Creating POJO List and retrieving data
attractionList = new AttractionList();
Log.e("List Size: ", ""+attractionList.getAttractionList().size());
//List Size: 0
}
Но если я использую то же время Журнала после, в любой кнопке:
@Override
public void onBackPressed(){
Log.e("List Size: ", ""+attractionList.getAttractionList().size());
//List Size: 16
}
На самом деле я не хочу получать данные в каждой отдельной Деятельности или создании намеренийпривести объект между действиями.Есть ли способ, как я мог это исправить?
PS: Это мой первый пост.Извините, если я не сделал это правильно.Большое спасибо.