Android Firebase按用户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 =

我制作了一个简单的“博文博客”应用程序,用户可以在其中发布特定的文章。 所有帖子都显示在FirebaseRecyclerAdapter中,它们工作得很好。 但是,我想过滤帖子,使其仅显示当前用户的帖子

我已经定义了按用户id过滤的查询,但由于某些原因,它不起作用,因为它仍然显示所有用户的帖子

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))