Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android layout ArrayAdapter中混乱的动态单选按钮_Android Layout_Android Arrayadapter_Android Radiobutton - Fatal编程技术网

Android layout ArrayAdapter中混乱的动态单选按钮

Android layout ArrayAdapter中混乱的动态单选按钮,android-layout,android-arrayadapter,android-radiobutton,Android Layout,Android Arrayadapter,Android Radiobutton,当我运行我的应用程序时,我得到的单选按钮比我需要的多得多。似乎单选按钮在同一组中重复。我真的不明白发生了什么事。这是我的定制阵列适配器。我想知道这里的问题 public class QuestionsListAdapter extends ArrayAdapter<QuestionProperties> { List<QuestionProperties> list; Context test; public QuestionsListAdapter(Co

当我运行我的应用程序时,我得到的单选按钮比我需要的多得多。似乎单选按钮在同一组中重复。我真的不明白发生了什么事。这是我的定制阵列适配器。我想知道这里的问题

public class QuestionsListAdapter extends ArrayAdapter<QuestionProperties> {


List<QuestionProperties> list;



Context test;



public QuestionsListAdapter(Context context,  int resource, List<QuestionProperties> list2) {
    super(context,resource,list2);
    test = context;
    list =list2;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view;

    final RadioButton[] rB;
     RadioHolder  holder = new RadioHolder();
    view= convertView;

    LinearLayout.LayoutParams layoutParams = new RadioGroup.LayoutParams(
            RadioGroup.LayoutParams.WRAP_CONTENT,
            RadioGroup.LayoutParams.WRAP_CONTENT);

        if(view == null)
        {
            LayoutInflater inflator = ((Activity) test).getLayoutInflater();
           view = inflator.inflate(R.layout.question_list_row, null);


            holder.questionTV = (TextView) view.findViewById(R.id.qTextView);
            holder.radiogroup = (RadioGroup) view.findViewById(R.id.radio_group);
            view.setTag(holder);

        }
        else{
            //view = convertView;
            holder = (RadioHolder) view.getTag();
            }



        holder.questionTV.setText(String.valueOf(list.get(position).getQuestionNo())+"."+" " + list.get(position).getQuestion());

        rB=new RadioButton[list.get(position).possibleAns.length];

        for(int count = 0; count<(list.get(position).possibleAns.length);count++)
        {
             rB[count]= new RadioButton(test);

            rB[count].setId(count);
            rB[count].setText(list.get(position).possibleAns[count]);
            layoutParams.weight=1.0f;
            layoutParams.setMargins(15, 0, 5, 10);
            rB[count].setOnClickListener(new View.OnClickListener(){

                @Override
                public void onClick(View v) {

                    String a = String.valueOf(v.getId());
                    Toast.makeText(QActivity.context, "Radio Button "+ a,Toast.LENGTH_SHORT).show();    
                  }
            });
            holder.radiogroup.addView(rB[count],layoutParams);  

        }
        return view;
}



  static class RadioHolder {
        protected TextView questionTV;
        protected RadioGroup radiogroup;

    }
公共类问题StatAdapter扩展了ArrayAdapter{
名单;
语境测试;
公共问题ListAdapter(上下文、int资源、列表2){
超级(上下文、资源、列表2);
测试=上下文;
列表=列表2;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图;
最终单选按钮[]rB;
RadioHolder=新的RadioHolder();
视图=转换视图;
LinearLayout.LayoutParams LayoutParams=新的RadioGroup.LayoutParams(
RadioGroup.LayoutParams.WRAP_内容,
RadioGroup.LayoutParams.WRAP_内容);
如果(视图==null)
{
LayoutInflater充气机=((活动)测试).getLayoutInflater();
视图=充气机。充气(R.layout.question\u list\u row,空);
holder.questionTV=(TextView)view.findViewById(R.id.qTextView);
holder.radiogroup=(radiogroup)view.findViewById(R.id.radio\u组);
视图.设置标签(支架);
}
否则{
//视图=转换视图;
holder=(RadioHolder)view.getTag();
}
holder.questionTV.setText(String.valueOf(list.get(position.getQuestionNo())+“+”+list.get(position.getQuestion());
rB=新单选按钮[list.get(position.position.possibleAns.length];

for(int count=0;count经过一些破解,我终于解决了它!我删除了else子句中的所有单选按钮。 解决办法

public class QuestionsListAdapter extends ArrayAdapter<QuestionProperties> {


List<QuestionProperties> list;

RadioButton rB;

Context test;

RadioHolder  holder;

String chkBtn;

LinearLayout.LayoutParams layoutParams = new RadioGroup.LayoutParams(
        RadioGroup.LayoutParams.WRAP_CONTENT,
        RadioGroup.LayoutParams.WRAP_CONTENT);




public QuestionsListAdapter(Context context,  int resource, List<QuestionProperties> list2) {
    super(context,resource,list2);
    test = context;
    list =list2;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view;


     holder = new RadioHolder();
    view= convertView;
    Log.v("ConvertView", String.valueOf(position));



        if(view == null)
        {
            LayoutInflater inflator = ((Activity) test).getLayoutInflater();
           view = inflator.inflate(R.layout.question_list_row, parent,false);

           holder.questionTV = (TextView) view.findViewById(R.id.qTextView);
            holder.radiogroup = (RadioGroup) view.findViewById(R.id.radio_group);



            //holder.radiogroup.check(list.get(position).getSelectedAns());

            view.setTag(holder);
             //((RadioHolder) view.getTag()).radiogroup.setTag(list.get(position));
            Log.v("holder setTag", String.valueOf(position));



        }
        else{
            view = convertView;
             holder = (RadioHolder)view.getTag();
            //((RadioHolder)view.getTag()).radiogroup.getTag();

            holder.radiogroup.removeAllViews();


        }



        holder.questionTV.setText(String.valueOf(list.get(position).getQuestionNo())+"."+" " + list.get(position).getQuestion());
        configureRadioButtons(position);
        chkBtn = String.valueOf(list.get(position).getSelectedAns());
        holder.radiogroup.check(Integer.valueOf(chkBtn));


        return view;
}



  static class RadioHolder {
        protected TextView questionTV;
        protected RadioGroup radiogroup;

    }


    public void configureRadioButtons(int pos){

        final int position = pos;
        //rB=new RadioButton(test);

        for(int count = 0; count<(list.get(position).possibleAns.length);count++)
        {
             rB= new RadioButton(test);

            rB.setId(count);
            rB.setText(list.get(position).possibleAns[count]);
            layoutParams.weight=1.0f;
            layoutParams.setMargins(15, 0, 5, 10);
            holder.radiogroup.addView(rB,layoutParams); 

            rB.setOnClickListener(new OnClickListener(){

                        @Override
                        public void onClick(View v) {
                            String a = String.valueOf(v.getId());
                            list.get(position).setSelectedAns(v.getId());
                        chkBtn =    String.valueOf(list.get(position).getSelectedAns());

                            Toast.makeText(QActivity.context, "Radio Button "+ a,Toast.LENGTH_SHORT).show();    

                        }           
            });

            rB.setOnCheckedChangeListener(new OnCheckedChangeListener(){

                @Override
                public void onCheckedChanged(CompoundButton buttonView,
                        boolean isChecked) {


                }

            });

            holder.radiogroup.clearCheck();
            Log.v("rB added to radiogroup", String.valueOf(position));

        }

    }
公共类问题StatAdapter扩展了ArrayAdapter{
名单;
无线电按钮;
语境测试;
无线电支架;
字符串chkBtn;
LinearLayout.LayoutParams LayoutParams=新的RadioGroup.LayoutParams(
RadioGroup.LayoutParams.WRAP_内容,
RadioGroup.LayoutParams.WRAP_内容);
公共问题ListAdapter(上下文、int资源、列表2){
超级(上下文、资源、列表2);
测试=上下文;
列表=列表2;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图;
支架=新的无线电支架();
视图=转换视图;
Log.v(“ConvertView”,String.valueOf(position));
如果(视图==null)
{
LayoutInflater充气机=((活动)测试).getLayoutInflater();
视图=充气机。充气(R.layout.question\u list\u row,parent,false);
holder.questionTV=(TextView)view.findViewById(R.id.qTextView);
holder.radiogroup=(radiogroup)view.findViewById(R.id.radio\u组);
//holder.radiogroup.check(list.get(position.getSelectedAns());
视图.设置标签(支架);
//((RadioHolder)view.getTag()).radiogroup.setTag(list.get(position));
Log.v(“holder setTag”,String.valueOf(position));
}
否则{
视图=转换视图;
holder=(RadioHolder)view.getTag();
//((RadioHolder)view.getTag()).radiogroup.getTag();
holder.radiogroup.removeAllViews();
}
holder.questionTV.setText(String.valueOf(list.get(position.getQuestionNo())+“+”+list.get(position.getQuestion());
配置单选按钮(位置);
chkBtn=String.valueOf(list.get(position.getSelectedAns());
支架.射线组检查(整数值(chkBtn));
返回视图;
}
静电级无线电保持器{
受保护的文本视图;
受保护的放射组放射组;
}
公共无效配置单选按钮(int pos){
最终内部位置=位置;
//rB=新单选按钮(测试);
对于(int count=0;count