Android RecycleView 里面有按钮点击 复用错位的问题解决

          今天做了商城收货地址选择的部分,地址信息又RecycleVeiw展示。里面有一个自己写的TextView 选择那个 那个背景图就是一个对号。而且是单选。之前定义一个int 常量num,每次点击textview都会去叠加,用奇偶性进行判断。奇数就是选中 偶数没选中 。。。。。。。。。。。大概知道我原来的思路了,,


          后来在滑动页面的时候,因为复用各种错乱。。。。。。后来找个好的解决办法。在javabean中添加一个 tag值。


          bean  selecttag为tag

package com.ingkoo.FragListBean.MySetBean;

import org.json.JSONObject;

/**
 * Created by Administrator on 2016/6/16.
 */


public class ReceivePlaceListBean {

    private String countryName;
    private String detail;
    private String idCard;
    private String post;
    private String cityName;
    private String provinceName;
    private String addressId;
    private int country;
    private String city;
    private String id;
    private int isDefault;
    private String userId;
    private String province;
    private String mobile;
    private String name;
    private String selecttag = "0";

    public ReceivePlaceListBean(JSONObject item) {
        countryName = item.optString("countryName");
        detail = item.optString("detail");
        idCard = item.optString("idCard");
        post = item.optString("post");
        cityName = item.optString("cityName");
        provinceName = item.optString("provinceName");
        addressId = item.optString("addressId");
        country = item.optInt(String.valueOf("country"));
        city = item.optString("city");
        id = item.optString("id");
        isDefault = item.optInt(String.valueOf("isDefault"));
        name = item.optString("name");
        userId = item.optString("userId");
        province = item.optString("province");
        mobile = item.optString("mobile");
//        selecttag = item.optString("selecttag");
    }

    public ReceivePlaceListBean(String tag){
        this.selecttag = tag;
    }

    public String getCountryName() {
        return countryName;
    }

    public void setCountryName(String countryName) {
        this.countryName = countryName;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }

    public String getIdCard() {
        return idCard;
    }

    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    public String getPost() {
        return post;
    }

    public void setPost(String post) {
        this.post = post;
    }

    public String getCityName() {
        return cityName;
    }

    public void setCityName(String cityName) {
        this.cityName = cityName;
    }

    public String getProvinceName() {
        return provinceName;
    }

    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }

    public String getAddressId() {
        return addressId;
    }

    public void setAddressId(String addressId) {
        this.addressId = addressId;
    }

    public int getCountry() {
        return country;
    }

    public void setCountry(int country) {
        this.country = country;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public int getIsDefault() {
        return isDefault;
    }

    public void setIsDefault(int isDefault) {
        this.isDefault = isDefault;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


    public String getSelecttag() {
        return selecttag;
    }

    public void setSelecttag(String selecttag) {
        this.selecttag = selecttag;
    }
}




activity  的item onclick事件


  mReceivePlaceAdapter.setmOnItemClickListener(new ReceivePlaceAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position, String msg) {

                for(int i = 0;i<position;i++){
                    mReceivePlaceListArray.get(i).setSelecttag("0");
                }

                for(int i = position+1;i<mReceivePlaceListArray.size();i++){
                    mReceivePlaceListArray.get(i).setSelecttag("0");
                }
                mReceivePlaceListArray.get(position).setSelecttag("1");
                mReceivePlaceAdapter.notifyDataSetChanged();

//                Toast.makeText(ChoosePlaceActivity.this,"点击了", Toast.LENGTH_SHORT).show();
            }


adapter 


//这里设置了点击的Tag 写Tag值在Activity里面,然后获取AddressId
        if (mDatas.get(position).getSelecttag().equals("1")){
            holder.mReceivePlaceSelectTv.setBackgroundResource(R.mipmap.ic_checked);
            mAccount.setAddressId(mDatas.get(position).getAddressId());
            Log.e("哈哈哈哈哈哈哈哈哈哈哈哈哈",mAccount.getAddressId());
        }else {
            holder.mReceivePlaceSelectTv.setBackgroundResource(R.mipmap.ic_check_no);
        }
    }



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值