У меня есть массив карточке (CardView) которые я загружаю в RecyclerView.
Я хочу разделять эти карточка своим элементом, не пойму как это можно сделать.
К примеру:
RecyclerView
Заголовок1, кнопка с действием
CardView
CardView
CardView
Заголовок2, кнопка с действием
CardView
CardView
CardView
Заголовок3, кнопка с действием
CardView
CardView
CardView
RecyclerView
Ответ
Вам надо по позиции элемента определять его тип и в зависимости от этого загружать определённую разметку и отображать её:
//метод, в коем вы должны в зависимости от позиции элемента возвращать
//её тип в виде числа, кое потом используется в onCreateViewHolder для загрузки разметки
//и в onBindViewHolder для наполнения её данными
@Override
public int getItemViewType(int position)
{
if (position == 0)
{
return 0;
}
else
{
return 1;
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
RecyclerView.ViewHolder vh;
View itemLayoutView;
//загружаем разметку в зависимости от типа и возвращаем
//нужный холдер
switch (viewType)
{
case 0:
itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.zero_type_layout, parent, false);
vh = new HolderZeroType(itemLayoutView);
break;
case 1:
itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.first_type_layout, parent, false);
vh = new HolderFirstType(itemLayoutView);
break;
}
return vh;
}
@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position)
{
switch (this.getItemViewType(position))
{
case 0:
HolderZeroType zero = (HolderZeroType) holder;
//наполняем данными разметку для нулевого типа
break;
case 1:
HolderFirstType first = (HolderFirstType) holder;
//наполняем данными разметку для нулевого типа
break;
}
}
public static class HolderFirstType extends RecyclerView.ViewHolder
{
...
public ViewHolderText(View v)
{
super(v);
...
}
}
public static class HolderZeroType extends RecyclerView.ViewHolder
{
...
public ViewHolderText(View v)
{
super(v);
...
}
}
Комментариев нет:
Отправить комментарий