Как фильтровать данные на стороне клиента с помощью адаптера подкачки firestore?

# #android #google-cloud-firestore #android-recyclerview #firebaseui

Вопрос:

Я использую FirestorePagingAdapter представление переработчика(GridLayoutManager). Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно исключить некоторые элементы на основе определенных условий, которые невозможны с помощью запросов. Ранее я мог использовать приведенный выше код внутри onBindViewHolder , чтобы скрыть их (LinearLayoutManager), но это не работает с GridLayoutManager. Поэтому мне нужно какое-то решение, чтобы либо скрыть эти элементы из представления переработчика(GridLayoutManager), не занимая места, либо каким-то образом удалить эти элементы до того, как они будут использованы адаптером.

 if (/* some condition */) {
    RecyclerView.LayoutParams param = (RecyclerView.LayoutParams)
            holder.binding.getRoot().getLayoutParams();

    param.height = 0;

    param.width = LinearLayout.LayoutParams.MATCH_PARENT;
}
 

Существует ли какой-либо обратный вызов/процедура FirestorePagingAdapter , в которой я могу отфильтровать данные до того, как адаптер их использует?

Обновить:

У меня есть Коллекция Посуды. У меня есть локальный список аллергий, которые я хочу проверить по dishAllergy полю. Он должен пропускать документы, содержащие любой элемент моего локального списка массивов, Также у меня есть еще один фильтр, который уже применен к dishCategory полю в запросе.

 firebaseFirestore.collection(DISHES_COLLECTION).whereArrayContains(DISH_CATEGORY, category);
 

Документ для сбора

Комментарии:

1. Что невозможно с запросом? Пожалуйста, отредактируйте свой вопрос и добавьте свою структуру базы данных в виде скриншота и укажите точные данные, которые вы хотите получить/отфильтровать.

2. @AlexMamo я добавил!

3. Итак, вы ищете что-то вроде того, чтобы в одном запросе вызывались методы whereArrayContains и whereNotIn, верно?

4. @AlexMamo Да. Но я думаю, что это невозможно в одном запросе. Также ограничение в 10 значений.

5. @AlexMamo какие-нибудь решения?