Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以使用什么适配器来填充接受Firestore中多个查询的recyclerView?_Java_Android_Firebase_Google Cloud Firestore_Firebaseui - Fatal编程技术网

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
对象,对吗?我面临类似问题,如果您能帮助我,我将非常感激