I have 2 buttons. On button click I decide which database to select for recyclerview. As for example on button B1's click, I set database DB1 for recyclerview. I am using firebaserecycleradapter. The problem is, getAdapter().notifyDataSetChanged() for recyclerview doesn't seem to work from FirebaseRecyclerAdapter definiton but works from populateviewholder. But since I set query on FirebaseRecyclerAdapter definition, at the end the database to be selected doesn't change on button click.
Here's some code:
//global declaration
FirebaseRecyclerAdapter<HomeBlog, BlogViewHolder> firebaseRecyclerAdapter;
//FirebaseRecyclerAdapter part:
firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<HomeBlog, BlogViewHolder>(
HomeBlog.class,
R.layout.profile_row,
BlogViewHolder.class,
query
//the query is the Firebase database that I want at a time.
//since getAdapter().notifyDataSetChanged() not reloading from here. query remains same.
)
{
@Override
protected void populateViewHolder(BlogViewHolder viewHolder, HomeBlog model, int position) {
final String post_key = getRef(position).getKey();
final String postPosition = String.valueOf(position);
//getAdapter().notifyDataSetChanged() seems to load in populateviewholder though.
//this I checked using Toast.
viewHolder.setImage(post_key);
viewHolder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//other code
}
});
}
};
mBlogList.setAdapter(firebaseRecyclerAdapter);
//one button click example:
grid.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//changing the query
query = mDatabase.orderByChild("UserId").equalTo(userId);
mBlogList.setAdapter(firebaseRecyclerAdapter);
mBlogList.getAdapter().notifyDataSetChanged();
}
});
I want to make sure the firebaserecycleradapter definition part also loads when I call getAdapter().notifyDataSetChanged(). Because it holds the query. Is there some approach to do that? Or I am doing a completely wrong process?