如何在所有列表视图中选择单选按钮

时间:2015-02-02 12:11:53

标签: android

这是我的Adapter类 我将发布用于将静态JSON数据拆分为带有RadioButton的ListView。我将分裂并设置他们的位置Radiobuttons。我的问题是如何在所有列表视图中选择radiobutton ..

public class TestAdapter extends BaseAdapter {

    // Declare Variables
    Context context;
    String[] ques_no, ques_name, opt1, opt2, opt3, opt4,answer;
    LayoutInflater inflater;
    ArrayList<QuestionList>qArrayList;
    public boolean[] thumbnailsselection;


    public TestAdapter(Context context, ArrayList<QuestionList> testData)
    {
        this.context=context;
        this.qArrayList=testData;

    }

    public TestAdapter(Context context, String[] ques_no, String[] ques_name,String[] opt1,String[] opt2,String[] opt3,String[] opt4) {
        this.context = context;
        this.ques_no = ques_no;
        this.ques_name = ques_name;
        this.opt1 = opt1;
        this.opt2 = opt2;
        this.opt3 = opt3;
        this.opt4 = opt4;

    }



    @Override
    public int getCount() {
        if(qArrayList !=null){
           return qArrayList.size();
        }
        return ques_no.length;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }
     public ArrayList<QuestionList> getBox() {
        ArrayList<QuestionList> box = new ArrayList<QuestionList>();
        for (QuestionList p : qArrayList) {

                box.add(p);
        }
        return box;
    }

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


     ViewHolder holder = null;

        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.test_rowlayout, null);
            holder = new ViewHolder();
            holder.radio_group=(RadioGroup)convertView.findViewById(R.id.RadioGroup01);
            holder.question_no = (TextView) convertView.findViewById(R.id.question_no);
            holder.question_name = (TextView) convertView.findViewById(R.id.question_name);
            holder.option1 = (RadioButton) convertView.findViewById(R.id.option1);
            holder.option2 = (RadioButton) convertView.findViewById(R.id.option2);
            holder.option3 = (RadioButton) convertView.findViewById(R.id.option3);
            holder.option4 = (RadioButton) convertView.findViewById(R.id.option4);
            holder.submit = (RadioButton) convertView.findViewById(R.id.submit_btn);

            convertView.setTag(holder);

        } else {
            holder = (ViewHolder) convertView.getTag();
        }




        //holder.question_no.setText(ques_no[position]);
        holder.question_name.setText(""+qArrayList.get(position).Question);
        holder.option1.setText(""+qArrayList.get(position).Option1);
        holder.option2.setText(""+qArrayList.get(position).Option2);
        holder.option3.setText(""+qArrayList.get(position).Option3);
        holder.option4.setText(""+qArrayList.get(position).Option4);      


        HashMap<Integer,String> radioMap = new HashMap<Integer, String>();
        radioMap.put(holder.option1.getId(),holder.option1.getText().toString());
        radioMap.put(holder.option2.getId(),holder.option2.getText().toString());
        radioMap.put(holder.option3.getId(),holder.option3.getText().toString());
        radioMap.put(holder.option4.getId(),holder.option4.getText().toString());

        holder.radio_group.setTag(new Integer(position));
        if (qArrayList.get(position).get(holder.radio_group.getCheckedRadioButtonId()) != null) {
            RadioButton r = (RadioButton) holder.radio_group
                    .getChildAt((Integer) qArrayList.get(position).get(holder.radio_group.getCheckedRadioButtonId()));
            r.setChecked(true);
            System.out.println("List View Position"+r);

        } else {
            holder.radio_group.clearCheck();
        }

        holder.radio_group.setTag(radioMap);        
        holder.radio_group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                HashMap<Integer,String> data = (HashMap<Integer,String>) group.getTag();
                Toast.makeText(context,data.get(checkedId),Toast.LENGTH_SHORT).show();                    
                int listcount = group.getChildCount();

                for (int x = 0; x < listcount; x++) {
                    RadioButton clicked_btn = (RadioButton) group.getChildAt(x);

                    if (clicked_btn.getId() == checkedId) {

                        //Toast.makeText(context, clicked_btn.getText().toString(), Toast.LENGTH_SHORT).show();

                        System.out.println(clicked_btn.getText().toString());

                      // int pos = holder.radio_group.indexOfChild(convertView.findViewById(checkedId));

                    }
                }
            }
        });



        return convertView;
    }



    private class ViewHolder {
        ImageView img_fimage;
        TextView question_no, question_name;
        RadioGroup radio_group;
        RadioButton option1, option2, option3, option4,radio_btn_answer;
        Button submit;
        ListView list;
    }

}

0 个答案:

没有答案