我正在构建一个社交应用。我需要使用firebase回收器适配器在主Feed中显示朋友帖子。我尝试了很多选项,但我无法做到这一点,下面的代码我只能加载当前用户的帖子。我在这里粘贴代码请指导我这方面。
我正在使用2个查询,一个用于朋友,另一个用于帖子
两个数据库引用如下
mUsersPostsDatabase = FirebaseDatabase.getInstance().getReference().child("posts");
mFriendsDatabase= FirebaseDatabase.getInstance().getReference().child("Friends").child(current_user_id);
方法如下
@Override
protected void onStart() {
super.onStart();
Query posts = mUsersPostsDatabase
.orderByChild("user_id")
.equalTo(mFriendsDatabase.getKey());
FirebaseRecyclerAdapter<CurrentUserPosts, UsersViewHolder> firebaseRecyclerAdapter =
new FirebaseRecyclerAdapter<CurrentUserPosts, UsersViewHolder>(
CurrentUserPosts.class,
R.layout.view_user_post_layout,
UsersViewHolder.class,
posts
) {
@Override
protected void populateViewHolder(UsersViewHolder usersViewHolder, CurrentUserPosts model, int position) {
usersViewHolder.setImage_url(model.getImage_url(), getApplicationContext());
usersViewHolder.setUser_image(model.getUser_image(), getApplicationContext());
usersViewHolder.setUser_name(model.getUser_name());
usersViewHolder.setDate_time(model.getDate_time());
usersViewHolder.setDescription(model.getDescription());
}
};
mUsersList.setAdapter(firebaseRecyclerAdapter);
}
数据库节点如下所示
朋友---&gt; current_user_id ----&gt; friend_id
帖子----&gt; post_id ----&gt; date,user_id,image_url,descp ......
答案 0 :(得分:0)
Query friends = FirebaseDatabase.getInstance().getReference().child("Friends").child(mAuth.getCurrentUser().getUid());
friends.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String friendID = ds.getRef().getKey().toString();
Query posts = FirebaseDatabase.getInstance().getReference()
.child("posts").orderByChild("user_id").equalTo(friendID);
posts.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot singleSnapshot : dataSnapshot.getChildren()) {
CurrentUserPosts newPost = new CurrentUserPosts();
newPost.setImage_url(singleSnapshot.child("image_url").getValue(String.class));
mPosts.add(newPost);
}
Collections.reverse(mPosts);
mUsersList.setAdapter(new UsersPostsThumbAdapter(mPosts));
}
@Override
public void onCancelled(DatabaseError databaseError) {
String errormsg = databaseError.toString();
Toast.makeText(getApplicationContext(), errormsg, Toast.LENGTH_SHORT).show();
}
});
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});