dotajava 2016-02-17 06:10 采纳率: 50%
浏览 1875
已结题

android listview和radiobutton

问题是这样的:1 listview 里面有多个item ,其中一个item是已经选中的,现在点击这个选中的radiobutton其他的radiobutton取消选中 ,这个功能已经做好了 了. 如图图片说明,但是点击未选中的radiobutton 想要把默认选中的radiobutton给去掉选中状态,可是没能成功!变成2个radiobutton都选中 图片说明

    @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            ViewHolder item=null;
            if(convertView==null){
                item= new ViewHolder();
                //获得组件,实例化组件
                convertView=layoutInflater.inflate(R.layout.autoset_item, null);
                item.bankNameTxt=((TextView) convertView.findViewById(R.id.cardInfoTxt));
                item.checkAuto=((RadioButton) convertView.findViewById(R.id.checkAuto));
                item.cardIdHide=((TextView) convertView.findViewById(R.id.cardIdTextVIew));
                item.cardIdHide.setVisibility(View.INVISIBLE);




            //可以使用setTag把查找的view缓存起来方便多次重用
            convertView.setTag(item);
        }else{
            item=(ViewHolder)convertView.getTag();
        }

        final  RadioButton radio= (RadioButton) convertView.findViewById(R.id.checkAuto);
        item.checkAuto=radio;

        item.checkAuto.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                //重置,确保最多只有一项被选中
                for (String key : states.keySet()) {
                    states.put(key, false);
                }
                states.put(String.valueOf(position), radio.isChecked());
                System.out.println(position + "----------------");

                CardAutoListAdapter.this.notifyDataSetChanged();
            }
        });

            boolean res=false;
            if(states.get(String.valueOf(position)) == null || states.get(String.valueOf(position))== false){
                res=false;
                states.put(String.valueOf(position), false);

            }
            else
                res = true;

            item.checkAuto.setChecked(res);
//默认选中
            if (data.get(position).get("isAutoPay").equals("0")){
                System.out.println(position);
                item.checkAuto.setChecked(true);
            }
//绑定数据 ,将传入data进行逐个赋值
        item.bankNameTxt.setText(data.get(position).get("bankName") + " **** **** **** " + data.get(position).get("endAcctid") + "");
            item.cardIdHide.setText(data.get(position).get("cardId") + "");

//            else{
//                //if (data.get(position).get("isAutoPay").toString().trim().equals("0")){
//                System.out.println(position);
//                item.checkAuto.setChecked(false);
//                //}
//            }
            return convertView;
    }
    static class ViewHolder {
         TextView bankNameTxt;//银行名称
         TextView cardInfoNo;//银行卡号
         RadioButton checkAuto;//代扣选择
         TextView cardIdHide;//卡号
    }
  • 写回答

6条回答

  • dotajava 2016-02-17 08:01
    关注

    有没有大神 指导一二

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题