list + radio 实现自定义单选

来源:互联网 发布:星球大战顺序 知乎 编辑:程序博客网 时间:2024/06/11 14:29

这里list+radio实现的自定义单选框列表,是指由若干个radio group组成的list。表现为有多个组别的单选框组合,这里的需求是实现每次只能选取一个组别中的一项单选项。


由于单选框在选中一项之后,无法直接通过.setCheck(false)来取消选中,故在自定义的列表中,一般只能实现同一列表项(radio group)内的单选。

若要实现列表全局单选(选中另一列表项中的单选框时,原列表项应还原为全部未选中),则需要用到自定义Adapter的监听事件中调用.notifyDataSetChanged()方法,重新加载adapter,然后在改写的adapter的.getView()方法中设置每次选中状态。

选中状态改变的监听如下,只用变量记录选中状态,并刷新adapter:
     class MyCheckListener implements CompoundButton.OnCheckedChangeListener{

            @Override
            public void onCheckedChanged(CompoundButton buttonView,
                      boolean isChecked) {
                 // TODO Auto-generated method stub
                 if (isChecked){
                      curRadio = buttonView.getId();
                     Log. i("radiocheck" , "change:" + curRadio);
                }
                MyAdapter. this.notifyDataSetChanged();
           }          
     }

getView()方法中,在完成所有数据映射,要返回view之前,设置当前选中状态:
RadioButton rb_check = (RadioButton) convertView.findViewById(curRadio );
if (rb_check != null)
   rb_check.setChecked( true);
0 0
原创粉丝点击