Хотя ответ Гастона работает, есть немного более простой способ, который не требует дополнительного слушателя. У FirestoreRecyclerAdapter
есть метод, который сигнализирует, когда он получил полный QuerySnapshot
.
void loadPosts() {
FirestoreRecyclerOptions<Post> options = new FirestoreRecyclerOptions.Builder<Post>()
.setQuery(query, Post.class)
.build();
progressDialog.show();
adapter = new FirestoreRecyclerAdapter<Post, DataViewHolder>(options) {
@Override
public void onDataChanged() {
progressDialog.hide();
}
@Override
protected void onBindViewHolder(@NonNull DataViewHolder dataViewHolder, int i, @NonNull Post post) {
dataViewHolder.setData(post.getTitle(), post.getDescription());
}
@NonNull
@Override
public DataViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.single_post, parent, false);
return new DataViewHolder(view);
}
};
recyclerView.setAdapter(adapter);
adapter.startListening();
}
Также см. Документацию FirebaseUI по FirestoreRecyclerAdapter
данным и событиям ошибок .
Обратите внимание, что onDataChanged
может вызываться несколько раз, сначала один раз, а затем каждый раз, когда изменяются данные для query
. Поэтому убедитесь, что код там может обрабатывать вызовы несколько раз. Например: если вы уничтожите диалоговое окно прогресса в onDataChanged
вместо того, чтобы скрыть его, вы также захотите проверить его существование.