[CymChad/BaseRecyclerViewAdapterHelper]单选失效

2024-08-20 356 views
5
if (!beanList.get(position).isSelected()) {
                for (SubscribeDateInfo.DataBean bean : beanList) {
                    bean.setSelected(false);
                }
                beanList.get(position).setSelected(true);
                mAdapterSubscribeDate.notifyDataSetChanged();
            }

这段代码放在setOnItemClickListener,实现单选达不到单选效果,换成原生RecyclerView就行,不知道是不是我操作问题 求解答

回答

6

按目前代码来看是没有问题? 是否添加了headview或者是使用了多布局?请提供更多代码?

9

@AllenCoder 没有header等其他布局,因为已经换了原生的,能不能提供一下代码。

7

我没有代码,这个操作很容易实现的,数据层Model 增加一个isSelete字段 。绑定bean的单选状态字段,控制bean的单选状态,通知视图刷新

4

在convert 中获取不到position 字段。你是怎么获取的,用这个做单选搞定么?

8

哦,搞定了。 @Override public void onClick(View v) {

            for (int i = 0; i < mData.size(); i++) {
                mData.get(i).setSelect(false);
            }
            mData.get(helper.getLayoutPosition()).setSelect(true);
            notifyDataSetChanged();

            EventBus.getDefault().post(new MessageEvent(2));
        }
1

@zidanpiaoguo 请问你这边为什么使用getLayoutPosition(),我测试几次点击之后这个位置不会发生变化,所以改用position了

3

convert 中是获取不到position 的吧。我重写的convert 方法,他源码都没有传position这个字段 。

0

@zidanpiaoguo 是的,convert()里如果能把position传过来就不用去遍历mData了,我的列表item比较多,最终还是用回了原生的Adapter