Android Firebase按用户id筛选
我制作了一个简单的“博文博客”应用程序,用户可以在其中发布特定的文章。 所有帖子都显示在FirebaseRecyclerAdapter中,它们工作得很好。 但是,我想过滤帖子,使其仅显示当前用户的帖子 我已经定义了按用户id过滤的查询,但由于某些原因,它不起作用,因为它仍然显示所有用户的帖子Android Firebase按用户id筛选,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,我制作了一个简单的“博文博客”应用程序,用户可以在其中发布特定的文章。 所有帖子都显示在FirebaseRecyclerAdapter中,它们工作得很好。 但是,我想过滤帖子,使其仅显示当前用户的帖子 我已经定义了按用户id过滤的查询,但由于某些原因,它不起作用,因为它仍然显示所有用户的帖子 userAuth = FirebaseAuth.getInstance(); mCurrentUser = userAuth.getCurrentUser(); AuthListener =
userAuth = FirebaseAuth.getInstance();
mCurrentUser = userAuth.getCurrentUser();
AuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
if (firebaseAuth.getCurrentUser() == null) {
Intent loginIntent = new Intent(MainActivity.this, LogInActivity.class);
loginIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(loginIntent);
}
}
};
myDatabase = FirebaseDatabase.getInstance().getReference().child("HelpPosts");
DatabaseOfUsers = FirebaseDatabase.getInstance().getReference().child("Users");
//make a filter for post
userId = userAuth.getCurrentUser().getUid();
CurrentUser = FirebaseDatabase.getInstance().getReference().child("HelpPosts");
mQueryCurrentUser = CurrentUser.orderByChild("uid").equalTo(userId);
@Override
protected void onStart() {
super.onStart();
userAuth.addAuthStateListener(AuthListener);
FirebaseRecyclerAdapter<Post,PostViewHolder>firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>
(Post.class,
R.layout.post_row,
PostViewHolder.class,
CurrentUser) {
@Override
protected void populateViewHolder(PostViewHolder viewHolder, Post model, final int position) {
final String post_key = getRef(position).getKey();
viewHolder.setTitle(model.getTitle());
viewHolder.setDesc(model.getDesc());
viewHolder.setTnumber(model.getPhone());
viewHolder.setUsername(model.getUsername());
viewHolder.myView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent singleView = new Intent(MainActivity.this,PostView.class);
singleView.putExtra("post_id",post_key);
startActivity(singleView);
}
});
}
};
recyclerView.setAdapter(firebaseRecyclerAdapter);
}
}您的代码很棒。您只错过了一小步:在
FirebaseRecyclerAdapter
初始化时,您应该使用mQueryCurrentUser
而不是CurrentUser
。像这样:
FirebaseRecyclerAdapter<Post,PostViewHolder>firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>
(Post.class,
R.layout.post_row,
PostViewHolder.class,
mQueryCurrentUser) {
...
FirebaseRecyclerAdapterfirebaseRecyclerAdapter=新的FirebaseRecyclerAdapter
(课后),
R.布局图。邮政编码行,
PostViewHolder.class,
mQueryCurrentUser){
...
这就应该做到了。你只错过了一小步:在你的
FirebaseRecyclerAdapter
初始化中,你应该使用mQueryCurrentUser
而不是CurrentUser
。像这样:
FirebaseRecyclerAdapter<Post,PostViewHolder>firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>
(Post.class,
R.layout.post_row,
PostViewHolder.class,
mQueryCurrentUser) {
...
userId = userAuth.getCurrentUser().getUid();
CurrentUser =FirebaseDatabase.getInstance().getReference().child("HelpPosts");
FirebaseRecyclerAdapter<Post,PostViewHolder>firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>
(Post.class,
R.layout.post_row,
PostViewHolder.class
CurrentUser.orderByChild("uid").equalTo(userId))
FirebaseRecyclerAdapterfirebaseRecyclerAdapter=新的FirebaseRecyclerAdapter
(课后),
R.布局图。邮政编码行,
PostViewHolder.class,
mQueryCurrentUser){
...
这样就可以了userId=userAuth.getCurrentUser().getUid();
userId = userAuth.getCurrentUser().getUid();
CurrentUser =FirebaseDatabase.getInstance().getReference().child("HelpPosts");
FirebaseRecyclerAdapter<Post,PostViewHolder>firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>
(Post.class,
R.layout.post_row,
PostViewHolder.class
CurrentUser.orderByChild("uid").equalTo(userId))
CurrentUser=FirebaseDatabase.getInstance().getReference().child(“帮助帖”);
FirebaseRecyclerAdapter FirebaseRecyclerAdapter=新的FirebaseRecyclerAdapter
(课后),
R.布局图。邮政编码行,
PostViewHolder.class
CurrentUser.orderByChild(“uid”).equalTo(用户ID))
userId=userAuth.getCurrentUser().getUid();
CurrentUser=FirebaseDatabase.getInstance().getReference().child(“帮助帖”);
FirebaseRecyclerAdapter FirebaseRecyclerAdapter=新的FirebaseRecyclerAdapter
(课后),
R.布局图。邮政编码行,
PostViewHolder.class
CurrentUser.orderByChild(“uid”).equalTo(用户ID))