0

我製作了簡單的「發佈博客」應用程序,用戶可以在其中發佈特定帖子。 所有的帖子都顯示在FirebaseRecyclerAdapter,他們工作得很好。 但是我想過濾帖子,使其僅顯示當前用戶帖子。Android Firebase按用戶篩選ID

我已經定義了查詢按用戶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"); 
    mQuerryCurrentUser = 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); 
} 

火力地堡數據

"HelpPosts" : { 
"-Kg9elNpSVKA1EY6Fh6X" : { 
    "Address" : "test", 
    "Desc" : "test", 
    "Phone" : "5555", 
    "Title" : "test1", 
    "uid" : "FuOOyBOVtDaqrY4mgpquH935HSV2", 
    "username" : "marius" 
}, 
"-Kg9euxfW9ivRq80NwV3" : { 
    "Address" : "test", 
    "Desc" : "test", 
    "Phone" : "2222", 
    "Title" : "test2", 
    "uid" : "FuOOyBOVtDaqrY4mgpquH935HSV2", 
    "username" : "marius" 
}, 
"-Kg9fIrq-hmUucb_R1b7" : { 
    "Address" : "test", 
    "Desc" : "test", 
    "Phone" : "2222", 
    "Title" : "test3", 
    "uid" : "MgADOIrKbPQGo7pkfJzzCJAMwOk1", 
    "username" : "mario" 
} 

}

回答

2

大碼你那裏。而且,您只會錯過一小步:在初始化時,您應該使用mQuerryCurrentUser而不是CurrentUser。就像這樣:

FirebaseRecyclerAdapter<Post,PostViewHolder>firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder> 
     (Post.class, 
     R.layout.post_row, 
     PostViewHolder.class, 
     mQuerryCurrentUser) { 
... 

而且應該這樣做

+1

謝謝,它的工作:) – MariusBrave

-2
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)) 
+0

什麼??????????? – Chisko