I want to show the list through the firestore database.
First, save data to String a
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if(task.isSuccessful()){
DocumentSnapshot document = task.getResult();
if(document.exists()){
a = document.getString("gender");
}
}
}
});
And onComplete method is asynchronous so I add while and Thread.sleep
while(a==null){
Thread.sleep(1000);
}
EventChangeListener();
Here is a EventChangeListener() function code
firestore.collection("Users")
//.whereEqualTo("mbti","ENTP")
//.whereEqualTo("region","충청남도")
.whereEqualTo("gender",a)
.orderBy("time",Query.Direction.DESCENDING).limit(50)
.addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(@Nullable QuerySnapshot value, @Nullable FirebaseFirestoreException error) {
if(error != null){
if(progressDialog.isShowing()){
progressDialog.dismiss();
}
Log.e("Firestore error",error.getMessage());
return;
}
for (DocumentChange dc : value.getDocumentChanges()){
if (dc.getType() == DocumentChange.Type.ADDED){
userArrayList.add(dc.getDocument().toObject(User.class));
}
myAdapter.notifyDataSetChanged();
if(progressDialog.isShowing()){
progressDialog.dismiss();
}
}
}
});
I want to repeat the while statement every 100 millisecond so EventChangeListener() function can recognize String a.
I wonder if counting time affects performance.