У меня есть требование, когда у меня есть один вид ресайклера, который должен поддерживаться несколькими классами моделей. Мой просмотр в переработчике раздувает несколько разных макетов. Таким образом, чтобы раздуть макет я определил мой onCreateViewholder, как показано ниже:Recycler View, поддерживающий несколько классов pojo
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder viewHolder = null;
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
switch (viewType) {
case 1:
View v1 = inflater.inflate(R.layout.searchresultsrow1, parent, false);
viewHolder = new AppViewHolder(v1);
break;
case 2:
View v2 = inflater.inflate(R.layout.searchresultsrow2, parent, false);
viewHolder = new AppViewHolder(v2);
break;
return viewHolder
}
О методе BindView я использую экземпляр для определения типа держателя: `
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
if(holder instanceof AppViewHolder){
AppViewHolder vh1 = (AppViewHolder) holder;
vh1.appName.setText(Html.fromHtml(**appList**.get(position).getmAppName());
}
} else if (holder instanceof ContactViewHolder){
ContactViewHolder vh3 = (ContactViewHolder) holder; vh3.contactName.setText(Html.fromHtml(**contactList**.get(position).getContactName()));}
}`
Теперь я невежественный, что отправить на ITEMCOUNT:
@Override
public int getItemCount() {
return ??;
}
Поскольку мой applist тип объект отличается и контакт Тип объекта списка отличается. Я попытался с корпусом switch в getItemCount, но затем он возвращает только количество отдельных списков и отображает результаты только для конкретного списка, тогда как мне нужны результаты, объединенные как из списка. Если я отправлю добавление обоих списков, то я встречу arrayindexoutofbounds исключение. Какой подход может быть использован в этом случае?
Я уже сделал это, но мое требование заключается в отображении комбинированных результатов. Если я использую if else, то он покажет только результаты списка одиночных массивов – Gautam
@Gautam Обновлен мой ответ. – Rohit5k2
В этом случае, предположим, что список содержит 5 элементов, тогда он вернет 10, и это вызовет arrayindexoutofbounds в onBindView. Поскольку положение может меняться, и оно может быть больше 5, которое я не найду внутри какого-либо из моих арраистов. – Gautam