Довольно избыточно использовать асинхронную задачу с вызовами Firebase, которые являются асинхронными.То, что вы можете просто сделать, это создать два метода:
public void showLoading(){
prog.setVisibility(View.VISIBLE);
}
public void hideLoading(){
prog.setVisibility(View.GONE);
}
И прямо перед вызовом асинхронного вызова firebase вызовите эти методы.Когда вы получите результат, вызовите метод сокрытия:
public void queryFirebase(){
showLoading();
query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
List<Places> placesList = new ArrayList<>();
for (DocumentSnapshot document : task.getResult()) {
Places places = document.toObject(Places.class);
System.out.println(places);
placesList.add(places);
}
if (placesList.size() > 0) {
System.out.println(placesList);
int placeCount = placesList.size();
Random randomGenerator = new Random();
ArrayList<Places> randomPlaceList = new ArrayList<>();
for (int i = 0; i < 3; i++) {
int randomIndex = randomGenerator.nextInt(placeCount);;
Places item = placesList.get(randomIndex);
randomPlaceList.add(item);
}
ListView mListView = findViewById(R.id.place_list);
mAdapter = new PlaceAdapter(randomPlaceList, getBaseContext());
mListView.setAdapter(mAdapter);
}
} else {
error.setVisibility(View.VISIBLE);
}
hideLoading();
}
});
}
Затем вы просто делаете:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
prog = findViewById(R.id.progressCircle);
prog.setVisibility(View.INVISIBLE);
queryFirebase();
}