温馨提示:本文翻译自stackoverflow.com,查看原文请点击:java - What adapter can I use to populate a recyclerView that accepts multiple queries from Firestore?
android firebase google-cloud-firestore java firebaseui

java - 我可以使用什么适配器来填充一个从Firestore接受多个查询的recyclerView?

发布于 2020-03-27 11:55:15

这个问题就是由此产生的我正在寻找一个适配器来填充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);

FireStore数据库

当前,这会检索我的帖子集合中的所有帖子,但是我想使用列表来仅过滤所述列表中包含userId的帖子。感谢您的任何帮助。

查看更多

查看更多

提问者
Bjorn
被浏览
98
629k 2019-07-06 13:36

正如道格·史蒂文森(Doug Stevenson)在回答中提到的那样:

您将必须查询要显示的每个文档,将结果收集在内存中,并使用其他类型的适配器填充视图。

正如我在您的代码中看到的那样,您仍在使用单个查询,该查询在您的代码中名为posts例如,如果要从两个查询中获取文档,则需要两个查询对象。在代码中,这是在本地合并两个查询的方式:

如您所见,该onSuccess()方法具有一个参数a List<Object>,该参数基本上包含两个查询的结果。

我正在寻找一个适配器,以用多个查询填充我的回收站视图。

并回答您的问题,因为您想在中显示数据RecyclerView,所以最合适的适配器类型可能是a,RecyclerView.Adapter不是 FirestoreRecyclerAdapter不接受列表的适配器将该列表传递给适配器的构造函数,并在其自身中显示每个元素ViewHolder而已!