重写ListView控件实现RadioButton单选

  @Override

        public View getView(int position, View convertView, ViewGroup parent) {

            convertView = MainActivity.this.getLayoutInflater().inflate(R.layout.item, null);  //解决办法: 每次都重新获取View

            Button button = (Button) convertView.findViewById(R.id.button);

            button.setText(s[position]);

            RadioButton radioButton = (RadioButton) convertView.findViewById(R.id.radioButton);

            radioButton.setId(position);  //把position设为radioButton的id

            radioButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {

                

                @Override

                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                    

                    if(isChecked){

                        //这段代码来实现单选功能

                        if(temp != -1){

                            RadioButton tempButton = (RadioButton) MainActivity.this.findViewById(temp);

                            if(tempButton != null){

                               tempButton.setChecked(false);

                            }

                            

                        }

                        

                        temp = buttonView.getId();

                        Log.i(TAG,"you are women- -   " + isChecked + "   " + temp);

                        

                    }

                }

            });

            

            //这里实现单选框选的回显,解决了单选框移出屏幕范围未选中状态

            if(temp == position){

                radioButton.setChecked(true);

            }

            return convertView;

        }

//            Holder holder;

//            if(convertView == null){    //1,当第一次加载ListView控件时  convertView为空 

//                convertView = MainActivity.this.getLayoutInflater().inflate(R.layout.item, null); //所以当ListView控件没有滑动时都会执行这条语句

//                holder = new Holder();

//                convertView.setTag(holder);

//            }else{

//                holder = (Holder) convertView.getTag();

//            }

//            

//            holder.button = (Button) convertView.findViewById(R.id.button);

//            holder.button.setText(s[position]);

//            

//            holder.radioButton = (RadioButton) convertView.findViewById(R.id.radioButton);   //

//            holder.radioButton.setId(position);  //2,因为这里对radioButton的id进行重新设置,滑动ListView时convertView不为空,上面的语句就没法得到radioButton对象,这条语句就会报空指针异常

          

//            holder.radioButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {

//                

//                @Override

//                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

//                    

//                    if(isChecked){

//                        if(temp != -1){

//                            RadioButton tempButton = (RadioButton) MainActivity.this.findViewById(temp);

//                            tempButton.setChecked(false);

//                            

//                        }

//                        

//                        temp = buttonView.getId();

//                        Log.i(TAG,"you are women- -   " + isChecked + "   " + temp);

//                        

//                    }

//                }

//            });

//            return convertView;

//        }

//        private class Holder{

//            private Button button;

//            private RadioButton radioButton;

//        }

    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值