私は単純な「投稿ブログ」アプリを作成しました。ここで特定の投稿を投稿できます。 すべての投稿は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"
}
}
感謝を行う必要があり、それが働いた:) – MariusBrave