Какой адаптер я могу использовать для заполнения recyclerView, который принимает несколько запросов из Firestore? - PullRequest
0 голосов
/ 03 июля 2019

Этот вопрос вырос из этого . Я ищу адаптер для заполнения моего 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);
* +1012 *FireStore DataBase

В настоящее время извлекаются все сообщения из моей коллекции сообщений, однако я хочу использовать список для фильтрации только тех сообщений, которые содержат идентификаторы пользователя в указанном списке. Спасибо за любую помощь.

1 Ответ

1 голос
/ 03 июля 2019

Как отметил Дуг Стивенсон в своем ответе:

Вам нужно будет сделать запрос для каждого документа, который вы хотите отобразить, собрать результаты в памяти и использовать другой тип адаптера для заполнения представления.

Как я вижу в вашем коде, вы все еще используете один запрос, который в вашем коде называется posts. Например, если вы хотите получить документы из двух запросов, требуются два объекта запроса. В коде вы можете объединить два запроса локально:

Как видите, метод onSuccess() имеет в качестве аргумента List<Object>, который в основном содержит результат обоих запросов.

Я ищу адаптер для заполнения моего представления переработчика несколькими запросами.

И чтобы ответить на ваш вопрос, так как вы хотите отобразить данные в RecyclerView, наиболее подходящим типом адаптера может быть RecyclerView.Adapter и , а не FirestoreRecyclerAdapter, который не ' принять список. Передайте этот список конструктору адаптера и отобразите каждый элемент в своем собственном ViewHolder. Вот и все!

...