【发布时间】:2019-04-08 04:33:16
【问题描述】:
我有 2 个按钮。单击按钮时,我决定为 recyclerview 选择哪个数据库。例如在按钮 B1 的单击上,我将数据库 DB1 设置为 recyclerview。我正在使用 firebaserecycleradapter。 问题是,recyclerview 的 getAdapter().notifyDataSetChanged() 似乎不适用于 FirebaseRecyclerAdapter 定义,但适用于 populateviewholder。但是由于我在 FirebaseRecyclerAdapter 定义上设置了查询,所以最后要选择的数据库不会在单击按钮时发生变化。
这里有一些代码:
//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();
}
});
我想确保在调用 getAdapter().notifyDataSetChanged() 时也加载 firebaserecycleradapter 定义部分。因为它包含查询。 有没有办法做到这一点?还是我在做一个完全错误的过程?
【问题讨论】:
标签: android firebase android-recyclerview