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 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100