listView点击一个Item,改变的是其他Item

在平时写代码中会经常碰到要点击ListView item 修改item的布局这种做法。
我在做这个功能的时候碰到一个问题。 点击item 中布局修改UI 改变的总是最后一个item的UI。

 然后就一步一步排查。1.ViewHoder不要是全局变量 2.不要在getview中直接修改布局。
 直接贴代码吧。思路就是在onclick事件中改变数据通过回调刷新Ui。
Java:

 private String[]num ={"0","0","0","0"};   //判断是否点击0
  for(int i=0;i<num.length;i++){
            HashMap<String,String> map= new HashMap<>();
            map.put("isCheck",num[i]);
            shops.add(map);
        }
          adapter =new colliconAdapter(Collicon.this,shops,0);
        adapter.seOnclick(this);
        MyList.setAdapter(adapter );
Adapter: 在Adapter中做个判断,因为你点击按钮了,会做刷新。然后会走getView方法。所以在getView方法中做这个判断。

if(l.get(position).get("isCheck").equals("0"))
        {
                holder.more.setVisibility(View.VISIBLE);
                holder.edit.setVisibility(View.GONE);
        }else{
            holder.more.setVisibility(View.GONE);
            holder.edit.setVisibility(View.VISIBLE);
        }

        //修改数据,并添加回调
holder.more.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                l.get(position).put("isCheck","1");
                changeui.changeui(position);
            }
        });

“`

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值