我有一个名为作为mainList customClass的arrayList
。它有customClass的两个子的ArrayList,说SUB1和SUB2。当我adapteronBindViewHolder()
读取mainList,它的工作好SUB1但SUB2的开始,它显示第一个记录多次。
对于SUB1的lastItem mainList位置是3。
为SUB2的第一项mainList位置是4和SUB2位置是在0;
二手recyclerview
定制的ArrayList(mainList)。
考虑mainList已经填满。
帮助需要onBindViewHolder().
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, final int position) {
final CustomMainListAdapter.mainHolder mainHolder= (CustomMainListAdapter.mainHolder) holder;
if (mainList.get(position).getArrayType().equals("sub1")) {
if (mainList.get(position).getsub1Array() != null) {
if (mainList.get(position).getsub1Array().size() > 0) {
mainHolder.text_mainTitle.setText(mainList.get(position).getsub1Array().get(position).getsub1Title());
mainHolder.text_mainsubTitle.setText(mainList.get(position).getsub1Array().get(position).getsub1Product());
mainHolder.text_main_contact.setText(mainList.get(position).getsub1Array().get(position).getsub1phoneNumber());
}
}
}
else {
if (mainList.get(position).getsub2Array() != null) {
if (mainList.get(position).getsub2Array().size() > 0) {
Log.e("tag","main-adapter size: "+mainList.get(position).getsub2Array().size());
for(int i=0;i<mainList.get(position).getsub2Array()().size();i++ ){
mainHolder.text_mainTitle.setText(mainList.get(position).getsub2Array()().get(i).getName());
mainHolder.text_mainsubTitle.setText(mainList.get(position).getsub2Array()().get(i).getProductTask());
mainHolder.text_main_contact.setText(mainList.get(position).getsub2Array()().get(i).getContact());
}
}
}
}
}
预计输出应该SUB1的所有记录都将被首先显示,然后SUB2记录从mainList。
你必须筛选和前集适配器将回收视图意味着你必须删除从onBindViewHolder
你如果条件代码,并把你的主类,你设置你的列表的适配器创建主列表
过滤主列表后,你只传递一个列表,这将有第一SUB1阵列的记录,然后SUB2阵列反之亦然适配器
这将增加回收视图性能,也解决你的问题。