我可以通过在RecyclerView定制适配器,onBindViewHolder一个循环()?

问题描述 投票:0回答:1

我有一个名为作为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。

java android android-recyclerview
1个回答
0
投票

你必须筛选和前集适配器将回收视图意味着你必须删除从onBindViewHolder你如果条件代码,并把你的主类,你设置你的列表的适配器创建主列表

过滤主列表后,你只传递一个列表,这将有第一SUB1阵列的记录,然后SUB2阵列反之亦然适配器

这将增加回收视图性能,也解决你的问题。

© www.soinside.com 2019 - 2024. All rights reserved.