背景选择器(XRetrofit中的点击使其改变颜色)

在对应的bean类中写入是否选中状态

           boolean isSelect=false;
           //然后get,set一下就好

先写好颜色

一个为选中状态,一个为未选中状态

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="true_sel">#e7d8c2fd</color>
    <color name="false_sel">#ffffff</color>
</resources>

sel

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/true_sel" android:state_selected="true" />
    <item android:drawable="@color/false_sel" android:state_selected="false" />
</selector>

默认选择下标为0的那个为选中状态

        fenleiBean.getResult().get(0).setIsSelect(true);

写在Adapter里面的

        viewHolder.itemView.setSelected(leftBean.get(i).getIsSelect());

写在Adapter里面点击事件里面,使用接口回调

//可以不“-1”,因为这个是下标问题,有的不用“-1”
  callBack.onCall(leftBean.get(viewHolder.getAdapterPosition() - 1).getId());
                for (int j = 0; j < leftBean.size(); j++) {
                    leftBean.get(j).setIsSelect(i == j);
                }
                notifyDataSetChanged();
  @Override
    public void getData(String data) {
        Gson gson = new Gson();
        fenleiBean = gson.fromJson(data, FenleiBean.class);
        result = fenleiBean.getResult();
        fenleiAdapter = new FenleiAdapter(this, result);
        fenlei.setAdapter(fenleiAdapter);
        fenleiBean.getResult().get(0).setIsSelect(true);
        fenleiAdapter.getCall(new FenleiAdapter.CallBack() {
            @Override
            public void onCall(String position) {
                presenter.getUrlDedalis(shangpinUrl + position);
            }
        });
        //添加
        for (int i = 0; i < result.size(); i++) {
            LeftBean leftBean = new LeftBean();
            leftBean.setPid(Long.valueOf(result.get(i).getId()));
            leftBean.setId(result.get(i).getId());
            leftBean.setName(result.get(i).getName());
            leftBeanDao.insertOrReplace(leftBean);
            //查询
            QueryBuilder<LeftBean> builder = leftBeanDao.queryBuilder();
            List<LeftBean> list = builder.where(LeftBeanDao.Properties.Name.eq(result.get(i).getName()))
                    .orderAsc(LeftBeanDao.Properties.Name)
                    .list();
            for (Object o : list) {
                if (o instanceof LeftBean) {
                    Toast.makeText(this, ((LeftBean) o).getName(), Toast.LENGTH_SHORT).show();
                }
            }
        }
    }
  @Override
    public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int i) {
        viewHolder.itemView.setSelected(leftBean.get(i).getIsSelect());
        viewHolder.text.setText(leftBean.get(i).getName());
        viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Bean bean = new Bean();
                String id = leftBean.get(i).getId();
                Long ids = Long.parseLong(leftBean.get(i).getId());
                bean.setId(id);
                bean.setIds(ids);
                EventBus.getDefault().post(bean);
                callBack.onCall(leftBean.get(viewHolder.getAdapterPosition() - 1).getId());
                for (int j = 0; j < leftBean.size(); j++) {
                    leftBean.get(j).setIsSelect(i == j);
                }
                notifyDataSetChanged();
            }
        });
    }
    
    public void getCall(CallBack callBack) {
        this.callBack = callBack;
    }

    public interface CallBack {
        void onCall(String position);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值