gpt4 book ai didi

android - 使用 parseSnapshot(DataSnapshot snapshot) 根据子键过滤要填充到 RecyclerView 中的项目

转载 作者:太空宇宙 更新时间:2023-11-03 13:12:28 24 4
gpt4 key购买 nike

我正在开发一种论坛类型的应用程序,用户可以在其中发布问题并使用相关技术对其进行标记。

该应用程序具有类似于 Firebase database repo 的模块和数据库.

我想根据标签过滤帖子。由于无法在服务器端对多个键值进行过滤,因此在填充到 RecyclerView 之前,我必须找到一种方法来过滤它。

这里引用了很多问题,找到了Puf的answer与本案相关。

这是我的 JSON 树

"posts" : {
"-Kdb0BsybfpPtkAPRF1-" : {
"author" : "Anush Surendran",
"body" : "Test 1 ",
"commentCount" : 0,
"created" : 1487787053303,
"starCount" : 1,
"stars" : {
"v9KTwyI2DMbDgKHALgPSJEBK3fi1" : true
},
"tag" : "#CSS",
"title" : "Checking Post Time",
"uid" : "BvNgX2U5U4SriTWsoEtqbGYgOTw1"
},
"-Kdb2D9vD-3kHWpCMIFi" : {
"author" : "Anush Surendran",
"body" : "Abc",
"commentCount" : 0,
"created" : 1485000000000,
"starCount" : 0,
"tag" : "#HTML",
"title" : "Test 2",
"uid" : "BvNgX2U5U4SriTWsoEtqbGYgOTw1"
}

我正在使用以下逻辑覆盖 parseSnapshot

    @Override
protected Post parseSnapshot(DataSnapshot snapshot) {
if (snapshot.getValue(Post.class).tag.equals("#HTML")){
Log.d(TAG,"gotHTML Filtered Posts");
return snapshot.getValue(Post.class);
}
else
return super.parseSnapshot(snapshot);
}

现在只尝试一个值。我将把它放在一个循环中以过滤多个标签(比如 HTML、CSS、JS)

代码运行良好,我可以看到 if 条件按预期运行。

如果没有带有特定标签的帖子,我不知道在 else 部分返回什么。当前的 else 部分返回所有帖子。

与此相比,是否有更好的数据过滤方法?

如有任何帮助,我们将不胜感激!

最佳答案

您可以从 firebase 获取过滤后的数据,而不是在客户端获取所有数据并进行过滤。

DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
Query postsQuery = mDatabase.child("posts").orderByChild("tag").equalTo("#HTML");
mAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>(Post.class, R.layout.item_post, PostViewHolder.class, postsQuery) {
@Override
protected void populateViewHolder(final PostViewHolder viewHolder, final Post model, final int position) {
final DatabaseReference yourRef = getRef(position);
viewHolder.bindToPost(model,getContext());

}
};
mRecycler.setAdapter(mAdapter);

关于android - 使用 parseSnapshot(DataSnapshot snapshot) 根据子键过滤要填充到 RecyclerView 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42467936/

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