RecyclerView 选择列表中的每第 8 个项目。怎么能阻止呢?

RecyclerView choose every 8th item in list. How can stop it?

我的项目中有一个recyclerView。另外,我从第三个图书馆添加了 expandableLayout 。当单击layout时它有cardView,它toggle expandable layout。但是,例如,如果单击第 1 个 item,它会在第 1 个 item 之后按顺序每第 8 个 item toggle。如何解决它并停止 toggle 其他 items?

public class BusAdapter extends RecyclerView.Adapter<BusAdapter.ViewHolder> {
        private Context context;
        private List<Bus> busList;
        private static String phoneNumber;
        private static final int PERMISSION_CODE = 101;
        private RecyclerView recyclerView;
        private Locale trlocale;

        VoyageAdapterToResultActivityListener voyageAdapterToResultActivityListener;

        public BusAdapter(Context _context, List<Bus> _busList, RecyclerView recyclerView) {
            this.context = _context;
            this.busList = _busList;
            this.recyclerView = recyclerView;
            this.trlocale = new Locale("tr-TR");
            voyageAdapterToResultActivityListener = (VoyageAdapterToResultActivityListener) context;
        }

        public class ViewHolder extends RecyclerView.ViewHolder {

            private TextView tvPrice, text_seat;
            private ImageView imgLogo;

            private ConstraintLayout relativeL_row_voyage_view;
            private CardView cardV_row_voyage;
            ExpandableLayout expandable_layout;
            ProgressBar progressB_dialog_seat;
            private ViewHolder(View view) {
                super(view);view.findViewById(R.id.relative_seat);
                expandable_layout = view.findViewById(R.id.expandable_layout);
                progressB_dialog_seat = view.findViewById(R.id.progressB_dialog_seat);
                relativeL_row_voyage_view = view.findViewById(R.id.relativeL_row_voyage_view);

                relativeL_row_voyage_view.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        expandable_layout.toggle();
                        progressB_dialog_seat.setVisibility(View.VISIBLE);

                        final Handler h = new Handler() {
                            @Override
                            public void handleMessage(Message message) {
                                progressB_dialog_seat.setVisibility(View.INVISIBLE);

                            }
                        };
                        h.sendMessageDelayed(new Message(), 5000);
                    }
                });

尝试为您的数据集添加一个布尔字段 "isExpanded" 到 class 总线。在适配器的 onBindViewHolder 中,根据数据的 isExpanded 标志设置 UI。当单击总线项时,将其 isExpanded 设置为 true 或 false 或 !isExpanded 根据需要,然后使适配器 notifyDataSetChanged()。
尝试:
修改您的对象 class,添加以下标志。

public class Bus {
    ...
    boolean isExpanded;
    boolean isShowProgress;

    public boolean isExpanded() {
        return this.isExpanded;
    }

    public void setExpanded(boolean expanded) {
        this.isExpanded = expanded;
    }

    public boolean isShowProgress() {
        return this.isShowProgress;
    }

    public void setShowProgress(boolean showProgress) {
        this.isShowProgress = showProgress;
    }
}

在您的适配器中:

public class BusAdapter extends RecyclerView.Adapter<BusAdapter.ViewHolder> {
    public class ViewHolder extends RecyclerView.ViewHolder {
        private TextView tvPrice, text_seat;
        private ImageView imgLogo;
        private ConstraintLayout relativeL_row_voyage_view;
        private CardView cardV_row_voyage;
        ExpandableLayout expandable_layout;
        ProgressBar progressB_dialog_seat;

        private ViewHolder(View view) {
            super(view);
            view.findViewById(R.id.relative_seat);
            expandable_layout = view.findViewById(R.id.expandable_layout);
            progressB_dialog_seat = view.findViewById(R.id.progressB_dialog_seat);
            relativeL_row_voyage_view = view.findViewById(R.id.relativeL_row_voyage_view);
        }
    }

    public void onBindViewHolder(ViewHolder holder, int i) {
        Bus bus = busList.get(i);

        if (bus.isExpanded()) {
            holder.expandable_layout.expand();
        } else {
            holder.expandable_layout.collapse();
        }
        holder.progressB_dialog_seat.setVisibility(bus.isShowProgress() ? View.VISIBLE : View.INVISIBLE);

        holder.relativeL_row_voyage_view.setOnClickListener(new View.OnClickListener() {
            bus.setExpanded(!bus.isExpanded());
            bus.setShowProgress(true);
            notifyDataSetChanged();

            final Handler h = new Handler() {
                @Override
                public void handleMessage(Message message) {
                    bus.setShowProgress(false);
                    notifyDataSetChanged();
                }
            };
            h.sendMessageDelayed(new Message(), 5000);
        });
        ...
    }  
}