首页 > 解决方案 > 我无法从 firebase 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);
                }
            });

}

标签: androidfirebasegoogle-cloud-firestore

解决方案


推荐阅读