Firebase显示以下用户的帖子

时间:2017-03-02 09:51:31

标签: android firebase firebase-realtime-database android-recyclerview

我正在使用FirebaseRecyclerAdapter,我正在尝试仅为关注用户显示帖子,因此我无法获得正确的查询,因为我需要的查询是在图片中描述的:

enter image description here

我目前正在使用此方法:

mDatabase= FirebaseDatabase.getInstance().getReference().child("Posts");

FirebaseRecyclerAdapter<Getting_Posts, PostViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Getting_Posts, PostViewHolder>(
            Getting_Posts.class, R.layout.post_card_design, PostViewHolder.class, mDatabase) {
        @Override
        protected void populateViewHolder(final PostViewHolder viewHolder, final Getting_Posts model, int position) {

            final String Post_Key = getRef(position).getKey();

        }
    };mPostList.setAdapter(firebaseRecyclerAdapter);
};

此方法显示所有帖子,但我需要显示以下用户的帖子

所以我需要我必须使用的查询,所以请任何帮助。

2 个答案:

答案 0 :(得分:2)

试试这个:

mDatabase= FirebaseDatabase.getInstance().getReference().child("Posts").orderByChild("UID").equalTo("UID TO SEARCH FOR");

FirebaseRecyclerAdapter<Getting_Posts, PostViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Getting_Posts, PostViewHolder>(
            Getting_Posts.class, R.layout.post_card_design, PostViewHolder.class, mDatabase)

答案 1 :(得分:0)

我还开发了一个与Instagram类似的应用程序,并使用了您正在寻找的条件, 所以首先从firebase获取你的所有以下内容到一个ArrayList.And而不是让条件获取帖子

if(followeinglist.contains(UID FROM POST)){mArrayListPost.add(YOUR POST);}

并查找以下内容

 DatabaseReference userPostRef = mDatabase.child(KeyTAG.TAG_FOLLOWINGS).child(YOUR USER ID).orderByChild("userid");
    if (userPostRef == null) {
    } else {
        userPostRef.addValueEventListener(new ValueEventListener() {

            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Iterable<DataSnapshot> children = dataSnapshot.getChildren();


                for (DataSnapshot child : children) {

                            followeinglist.add(child.getKey());
                                       }
                mAdapter1.notifyDataSetChanged();
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }