我可以使用什么适配器来填充接受来自 Firestore 的多个查询的 recyclerView?
What adapter can I use to populate a recyclerView that accepts multiple queries from Firestore?
这个问题源于。我正在寻找一个适配器来填充我的 RecyclerView
多个查询。
我目前正在使用 FirestoreRecyclerAdapter
,但被告知因为它只接受一个查询,所以我不能用它来填充 RecyclerView
和集合中的选定文档。
我目前拥有的:
Query posts = db.collection("posts");
FirestoreRecyclerOptions<Post> options = new FirestoreRecyclerOptions.Builder<Post>()
.setQuery(posts, Post.class)
.build();
adapter = new FirestoreRecyclerAdapter<Post, PostViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull PostViewHolder postViewHolder, int position, @NonNull Post post) {
postViewHolder.setPost(post);
}
@NonNull
@Override
public PostViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_view_layout, parent, false);
return new PostViewHolder(view);
}
};
recyclerView.setAdapter(adapter);
这当前检索我的帖子集合中的所有帖子,但是我想使用一个列表来过滤仅包含所述列表中的 userId 的帖子。感谢您的帮助。
正如 Doug Stevenson 在他的回答中提到的那样:
You will have to make a query for each one of the documents you want to display, collect the results in memory, and use a different type of adapter to populate the view.
正如我在您的代码中看到的,您仍在使用单个查询,该查询在您的代码中被命名为 posts
。例如,如果要从两个查询中获取文档,则需要两个查询对象。在代码中,这是您可以在本地合并两个查询的方法:
如您所见,onSuccess()
方法有一个参数 List<Object>
,它基本上包含两个查询的结果。
I am looking for an adapter to populate my recycler view with multiple queries.
回答你的问题,因为你想在 RecyclerView
中显示数据,最合适的适配器类型可能是 RecyclerView.Adapter
而 不是 FirestoreRecyclerAdapter
不接受列表。将该列表传递给适配器的构造函数并在其自己的 ViewHolder
中显示每个元素。就是这样!
这个问题源于RecyclerView
多个查询。
我目前正在使用 FirestoreRecyclerAdapter
,但被告知因为它只接受一个查询,所以我不能用它来填充 RecyclerView
和集合中的选定文档。
我目前拥有的:
Query posts = db.collection("posts");
FirestoreRecyclerOptions<Post> options = new FirestoreRecyclerOptions.Builder<Post>()
.setQuery(posts, Post.class)
.build();
adapter = new FirestoreRecyclerAdapter<Post, PostViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull PostViewHolder postViewHolder, int position, @NonNull Post post) {
postViewHolder.setPost(post);
}
@NonNull
@Override
public PostViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_view_layout, parent, false);
return new PostViewHolder(view);
}
};
recyclerView.setAdapter(adapter);
这当前检索我的帖子集合中的所有帖子,但是我想使用一个列表来过滤仅包含所述列表中的 userId 的帖子。感谢您的帮助。
正如 Doug Stevenson 在他的回答中提到的那样:
You will have to make a query for each one of the documents you want to display, collect the results in memory, and use a different type of adapter to populate the view.
正如我在您的代码中看到的,您仍在使用单个查询,该查询在您的代码中被命名为 posts
。例如,如果要从两个查询中获取文档,则需要两个查询对象。在代码中,这是您可以在本地合并两个查询的方法:
如您所见,onSuccess()
方法有一个参数 List<Object>
,它基本上包含两个查询的结果。
I am looking for an adapter to populate my recycler view with multiple queries.
回答你的问题,因为你想在 RecyclerView
中显示数据,最合适的适配器类型可能是 RecyclerView.Adapter
而 不是 FirestoreRecyclerAdapter
不接受列表。将该列表传递给适配器的构造函数并在其自己的 ViewHolder
中显示每个元素。就是这样!