我无法从Firebase Firestore提取帖子?

时间:2019-04-16 07:20:59

标签: android firebase google-cloud-firestore

我对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);
                }
            });

}

0 个答案:

没有答案