Имею адаптер RecyclerView
в который передаю ArrayList<MyList>
.
ArrayList<MyList> myList;
В onBindViewHolder
проверяю условие
if(myList.isShown) //показываю данные.
Например в myList
100 записей, 5 из которых myList.isShown == true
.
RecyclerView
где myList.isShown == true
выводит данные,а где myList.isShown == false
выводит пустые яцейки.Как вывести только нужные ячейки?
Вам нужно каждый раз формировать новый список из необходимых и на getCount()
возвращать его size()
.
Например вот так (в адаптере):
ArrayList<MyList> listShown;
void createListForShow(ArrayList<MyList> listAll){
listShown = new ArrayList<MyList>();
for (int i=0;i<listAll.size();i++)
if (listAll.get(i).isShown) listShown.add(listAll.get(i));
notifyDataSetChanged();
}
@Override
public int getItemCount() {
return listShown.size();
}
Не уверен поможет ли вам это решение, но есть интересный метод:
P.S - прошу прощения, но код на kotlin, уже даже забыл как эти методы на java выглядят =)) но думаю разница не особо сильная.
override fun getItemViewType(position: Int): Int {
val item = mItems.get(position);
if (item.visible == true) {
return 1
}
return 0
}
А в методе onCreateViewHolder делаем так:
override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): BaseVH? {
val inflater: LayoutInflater = LayoutInflater.from(mContext)
if (viewType == 1) {
return CustomVH(inflater.inflate(R.layout.your_layout_here, parent, false))
}
return null
}
в onBindViewHolder нужно holder на нуль проверять, если не нуль то заполнять данными.
С null не проверял, но если будет ругаться на то что нельзя null holder возвращать, то можно просто пустой holder возвращать с 0 высотой view. Недавно копался с LayoutManagerom и разные способы пробовал и точно знаю что с 0 высотой места не занимает, или View.GONE как вариант.
А вообще метод onBindViewHolder нужен для заполнения данными, а в него уже переход после onCreateViewHolder, тоесть вы как бы макет уже загрузили, но просто он пустой и поэтому занимает место.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Делаю проект по javaFXПодскажите, пожалуйста, как сделать привязку субтитров ко времени на видео?
В приложении есть два таймераПервый после старта работает нормально, щелкает раз в секунду, отрабатывает игровую логику
Как после редактирования данных пользоватилем таблицы TabbleView по нажатию на кнопку Save считать данные из таблицы TableView