# #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 какие-нибудь решения?