expandableListView,group和child都是动态生成的,每一个child都是自己写的layout,例如:一个child为一个RadioGroup,点击一个radiobutton 其值显示在group的textview中 现在出现一个问题 点击了能显示,但是当点击另一个groupItem时 报空指针异常,或者点击其他group时,在点击写好的radioGroup那个groupItem报空指针异常 我的代码如下:
else if (groupPosition == 1) {
            // 单选框
            if (convertView == null)
                convertView = mChildInflater.inflate(R.layout.time_settings_layout,null);
            final RadioGroup radioGroup = (RadioGroup) convertView.findViewById(R.id.timesetting);
            final RadioButton radioButton1 = (RadioButton) convertView.findViewById(R.id.threesecond);
            final RadioButton radioButton2 = (RadioButton) convertView.findViewById(R.id.fivesecond);
            final RadioButton radioButton3 = (RadioButton) convertView.findViewById(R.id.sevensecond);
            final List<RadioButton> radios = new ArrayList<RadioButton>();
            
            radios.add(radioButton1);
            radios.add(radioButton2);
            radios.add(radioButton3);
            
            radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    // TODO Auto-generated method stub
                    for(int i = 0; i < radios.size(); i++){
                     if(radios.get(i).getId() == checkedId){
                     getGroup(1).setDownMessage(radios.get(i).getText().toString());
                     notifyDataSetChanged();
                     }
                 }
                }   
                
            });
            return convertView;报错:12-18 10:35:55.920: ERROR/AndroidRuntime(8722):     at com.cn.adapter.SettingListAdapter.getChildView(SettingListAdapter.java:222)
12-18 10:35:55.920: ERROR/AndroidRuntime(8722):     at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:450)
12-18 10:35:55.920: ERROR/AndroidRuntime(8722):     at android.widget.AbsListView.obtainView(AbsListView.java:2012)
。。求指点啊 谢谢

解决方案 »

  1.   

    radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() 报错  求大神看看呀。不甚感激
      

  2.   

    SettingListAdapter.java这个文件贴出来看看呢,系统提示它222行报错,所以麻烦把222行标红。
      

  3.   

    问题很明显啊这个地方是null的。。是不是没有取得ID啊radioGroup
      

  4.   


             radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                    @Override
                    public void onCheckedChanged(RadioGroup group, int checkedId) {
                        // TODO Auto-generated method stub
                        for(int i = 0; i < radios.size(); i++){
                         if(radios.get(i).getId() == checkedId){
                             String radioText = radios.get(i).getText().toString();
                         getGroup(1).setDownMessage(radioText);
                         notifyDataSetChanged();
                         }
                     }
                    }   
                    
                });
                return convertView;
    SettingListAdapter.java有点大 目前数据都在里面
      

  5.   

    else if (groupPosition == 1) {
                // 单选框
                if (convertView == null)
                    convertView = mChildInflater.inflate(R.layout.time_settings_layout,null);
                final RadioGroup radioGroup = (RadioGroup) convertView.findViewById(R.id.timesetting);
                final RadioButton radioButton1 = (RadioButton) convertView.findViewById(R.id.threesecond);
                final RadioButton radioButton2 = (RadioButton) convertView.findViewById(R.id.fivesecond);
                final RadioButton radioButton3 = (RadioButton) convertView.findViewById(R.id.sevensecond);
                final List<RadioButton> radios = new ArrayList<RadioButton>();
                
                radios.add(radioButton1);
                radios.add(radioButton2);
                radios.add(radioButton3);
                
    System.out.println("RadioGroup......");
                radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                    @Override
                    public void onCheckedChanged(RadioGroup group, int checkedId) {
                        // TODO Auto-generated method stub
                        for(int i = 0; i < radios.size(); i++){
                         if(radios.get(i).getId() == checkedId){
                             String radioText = radios.get(i).getText().toString();
                         getGroup(1).setDownMessage(radioText);
                         notifyDataSetChanged();
                         }
                     }
                    }   
                    
                });
                return convertView;
                报错行红色标注了
      

  6.   

      关注下:final RadioGroup radioGroup = (RadioGroup) convertView.findViewById(R.id.timesetting);
    有没有执行!
      

  7.   

    能到找到其ID 可能上面我没有说清楚:紧紧点击groupposition = 1 时 没问题的,当点击了groupposition =2 时 再点击 groupposition =1 报错 
      

  8.   

    你这里指定义了一个RadioGroup啊,应该循环添加吧?
      

  9.   


    循环添加是指? 我是将radiobutton一起加进RadioGroup中 ,监听的radiogroup的CheckedChange。。 找不出原因啊
      

  10.   

    我纳闷为什么你想着在adapter里面监听事件呢?
      

  11.   

    太乱了无从下手也怪我掌握的不狗深刻
    建议你按照它运行的流程,一步步的观察,多用sysout打印一些信息,学长只能帮你到这儿了,不好意思!~