Я очень плохо знаком с firebase и пытался получить какой-то контент, размещенный в базе данных firebase firestore. Я реализовал код, но он не может получать сообщения и только обновляется. Он показывает мне белый экран, а не пост. Было бы полезно, если кто-нибудь и посмотрит код, и предложит мне лучшие практики для извлечения контента из базы данных firebase firestore.
код для getpost ()
public void getAllPosts() {
refreshLayout.setRefreshing(true);
mFirestore.collection("Posts")
.orderBy("timestamp", Query.Direction.DESCENDING)
.get()
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
if (!queryDocumentSnapshots.isEmpty()) {
for (final DocumentChange doc : queryDocumentSnapshots.getDocumentChanges()) {
if (doc.getType() == DocumentChange.Type.ADDED) {
mFirestore.collection("Users")
.document(currentUser.getUid())
.collection("Friends")
.get()
.addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot querySnapshot) {
if (!querySnapshot.isEmpty()) {
for (DocumentChange documentChange : querySnapshot.getDocumentChanges()) {
if (documentChange.getDocument().getId().equals(doc.getDocument().get("userId"))) {
Post post = doc.getDocument().toObject(Post.class).withId(doc.getDocument().getId());
mPostsList.add(post);
refreshLayout.setRefreshing(false);
mAdapter_v19.notifyDataSetChanged();
}
}
if (mPostsList.isEmpty()) {
refreshLayout.setRefreshing(false);
}
} else {
refreshLayout.setRefreshing(false);
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
refreshLayout.setRefreshing(false);
mPostsRecyclerView.invokeState(EmptyStateRecyclerView.STATE_ERROR);
Log.w("Error", "listen:error", e);
}
});
}
}
}else{
refreshLayout.setRefreshing(false);
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
refreshLayout.setRefreshing(false);
mPostsRecyclerView.invokeState(EmptyStateRecyclerView.STATE_ERROR);
Log.w("Error", "listen:error", e);
}
});
}