追随者结构firebase android

时间:2017-11-22 12:37:00

标签: android

我想在我的Android应用程序中实现关注者功能。 '首先' image是指我所遵循的用户列表。 '第二'图片包含用户发布的所有帖子的所有ID以及第三个'图像havin发布详细信息。我想要做的只是加载我所关注的那些用户的帖子。

我正在做的是,我收到来自关注者节点的电子邮件,并使用索引的recyclerview我加载数据,但它无法正常工作,因为recyclerview没有获得动态参考。任何消化溶液?

第一

enter image description here

第二

enter image description here

第三

enter image description here

1 个答案:

答案 0 :(得分:0)

为了实现这一目标,您需要查询数据库三次,如下所示:

FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
String userEmail = firebaseUser.getEmail();
String encodedUserEmail = userEmail.replace(".", ",");

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userEmailFromFollowersRef = rootRef.child("followers").child(encodedUserEmail);
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String followerEmail = ds.getKey();

            DatabaseReference my_postsRef = rootRef.child("my_posts").child(followerEmail);
            ValueEventListener valueEventListener = new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    for(DataSnapshot dSnapshot : dataSnapshot.getChildren()) {
                        String postId = dSnapshot.getKey();

                        DatabaseReference postsRef = rootRef.child("posts").child(postId);
                        ValueEventListener vel = new ValueEventListener() {
                            @Override
                            public void onDataChange(DataSnapshot dataSnapshot) {
                                for(DataSnapshot child : dataSnapshot.getChildren()) {
                                    String postText = child.child("postText").getValue(String.class);
                                    Log.d("TAG", postText);
                                }
                            }

                            @Override
                            public void onCancelled(DatabaseError databaseError) {}
                        };
                        postsRef.addListenerForSingleValueEvent(vel);
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {}
            };
            my_postsRef.addListenerForSingleValueEvent(valueEventListener);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
userEmailFromFollowersRef.addListenerForSingleValueEvent(eventListener);