Java 我可以使用什么适配器来填充接受Firestore中多个查询的recyclerView?
这个问题源于我的想法。我正在寻找一个适配器,用多个查询填充我的Java 我可以使用什么适配器来填充接受Firestore中多个查询的recyclerView?,java,android,firebase,google-cloud-firestore,firebaseui,Java,Android,Firebase,Google Cloud Firestore,Firebaseui,这个问题源于我的想法。我正在寻找一个适配器,用多个查询填充我的RecyclerView 我目前正在使用FirestoreRecyclerAdapter,但被告知,由于它只接受一个查询,我无法使用它用集合中的选定文档填充RecyclerView 我目前拥有的: Query posts = db.collection("posts"); FirestoreRecyclerOptions<Post> options = new FirestoreRecyclerOption
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);
queryposts=db.collection(“posts”);
FirestoreRecyclerOptions选项=新建FirestoreRecyclerOptions.Builder()
.setQuery(posts,Post.class)
.build();
适配器=新FirestoreRecyclerAdapter(选项){
@凌驾
受保护的无效onBindViewHolder(@NonNull PostViewHolder PostViewHolder,int position,@NonNull Post Post){
postViewHolder.setPost(post);
}
@非空
@凌驾
public PostViewHolder onCreateViewHolder(@NonNull ViewGroup父级,int viewType){
View=LayoutInflater.from(parent.getContext())
.充气(R.layout.card\u view\u layout,父级,假);
返回新的PostViewHolder(视图);
}
};
recyclerView.setAdapter(适配器);
这当前检索我的帖子集合中的所有帖子,但是我想使用一个列表来筛选所述列表中仅包含userId的帖子。谢谢您的帮助。正如道格·史蒂文森在回答中提到的: 您必须对要显示的每个文档进行查询,在内存中收集结果,并使用不同类型的适配器填充视图 正如我在代码中看到的,您仍然在使用一个查询,在代码中该查询名为
posts
。例如,如果要从两个查询中获取文档,则需要两个查询对象。在代码中,这是如何在本地合并两个查询:
onSuccess()
方法有一个列表作为参数,它基本上包含两个查询的结果
我正在寻找一个适配器,用多个查询填充我的回收器视图
为了回答您的问题,由于您希望在RecyclerView
中显示数据,因此最合适的适配器类型可能是RecyclerView.adapter
和不接受列表的FirestoreRecyclerAdapter
。将该列表传递给适配器的构造函数,并在其自己的ViewHolder
中显示每个元素。就这样 如果我不知道需要进行多少查询,该怎么办?我要查询的列表没有设置的长度。另外,如果FirestoreRecyclerAdapter扩展了RecyclerView.Adapter,为什么FirestoreRecyclerAdapter不能接受查询列表?您应该知道,因为您从数据库中获取了该编号。如果您有两个以上的问题,您可以使用一个列表
,就像我在这里的回答一样。因此,您可以将任务列表传递给whenAllSuccess()
。可以有两个(如我的示例中所示),可以有多个,也可以有多个。首先,您不是向RecyclerView.Adapter
传递查询列表,而是传递来自数据库的对象列表。您不能将任何列表传递给构造函数,因为它的构造函数都不允许您对列表进行分类。您只能传递FirestoreRecyclerOptions
对象,对吗?我面临类似问题,如果您能帮助我,我将非常感激