0

私は単純な「投稿ブログ」アプリを作成しました。ここで特定の投稿を投稿できます。 すべての投稿はFirebaseRecyclerAdapterに表示され、うまく動作します。 しかし、現在のユーザーだけが投稿を表示するように投稿をフィルタリングしたいと思います。Android用Firebaseユーザ名でフィルタ

ユーザー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); 
} 

Firebaseデータ

"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

グレートコードは、あなたがそこに持っています。ちょっとした手間が足りません:FirebaseRecyclerAdapterの初期化では、CurrentUserの代わりにmQuerryCurrentUserを使用してください。このように:

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

関連する問題