gpt4 book ai didi

android - FirebaseRecyclerAdapter - 如何在创建后更改数据库查询

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:52:22 24 4
gpt4 key购买 nike

问题

我有一个通过 FirebaseRecyclerAdapter 在 android 中显示的项目列表。我使用所有项目列表(比方说“帖子”)的数据库引用创建了这个适配器。该帖子还显示类别,如果用户单击该类别,我想更新列表以仅显示该类别的项目。

我试过的解决方案不起作用我在“类别” TextView 上放置了一个点击监听器,当用户点击它时,我尝试用新的数据库查询实例化一个新的适配器,但它不起作用。

其他想法:在适配器外执行:创建一个新的 Intent 以重新启动 fragment 并使用新的查询创建一个新的适配器

问题有人处理过同样的情况,在用户点击时你想过滤 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 引用的新适配器创建一个新 fragment ……但这是最好的方法吗?有没有办法在传递另一个查询的填充 View 中使用相同的适配器?

最佳答案

您可以在使用新查询构建选项后使用 updateOptions(options)。

更新选项(新选项)

一个例子

fun changeQuery() {
val newQuery = mBaseQuery
.orderByChild("timestamp")
.limitToLast(100)

// Make new options
val newOptions = FirebaseRecyclerOptions.Builder<Post>()
.setQuery(newQuery, Post::class.java)
.build()

// Change options of adapter.
mAdapter.updateOptions(newOptions)
}

Reference

关于android - FirebaseRecyclerAdapter - 如何在创建后更改数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38749469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com