问题
我有一个通过FirebaseRecyclerAdapter在android中显示的项目列表.我创建了这个适配器,在所有项目列表上都有一个数据库引用(让我们说“帖子”).帖子还显示类别,如果用户点击类别,我想更新列表以仅显示该类别的项目.
我试过的解决方案不起作用
我在“类别”textview上放置了一个单击侦听器,当用户单击它时,我尝试使用新的数据库查询实例化一个新的适配器,但它不起作用.
其他想法:
在adpater之外做:
创建一个新的Intent以重新启动片段并使用新查询创建一个新的适配器
题
有人处理相同的情况,在用户点击您要过滤由adpater检索的原始项目列表?
什么是最好的解决方案?
细节
protected void populateViewHolder(final PostViewHolder viewHolder, final Post post, final int position) {
/* Set the post text, author and category */
viewHolder.postText.setText(post.getText());
viewHolder.postAuthor.setText(post.getAuthor());
viewHolder.postCategory.setText(post.getCategory());
/* Set a listener on category so that
I refresh data with only that category */
viewHolder.quoteCategory.setonClickListener(new View.OnClickListener() {
Post selectedPost = getItem(position);
@Override
public void onClick(View v) {
String category = selectedPost.getCategory();
// !!!! Now I HAVE TO CHANGE DATA SET !!! ///
我想现在我可以创建一个带有正确Db引用的新适配器的新片段……但这是最好的方法吗?
有没有办法在填充视图中使用相同的Adapater传递另一个查询?
解决方法:
单击发生时,尝试在适配器上调用.notifyDatasetChanged().使用新的firebase数据更改数据集后.