2017-04-19 3 views
0

나는 동적 인 라디오 버튼을 가진 listview를 가지고있다. (그것은 listview에서 몇가지 질문의 크기에 기초하여 만들 것이다. ie, 첫 번째 질문에 대해 나는 4 개의 라디오 버튼을 가지고있다. ..). 내 문제는 사용자가 라디오 버튼을 사용하여 대답을 선택하면 해당 양식을 제출해야한다는 것입니다. 그렇다면 선택한 답변과 함께 어떻게 목록보기 데이터를 얻을 수 있습니까? 또한 질문에 대한 응답 여부를 확인해야합니다 (라디오 그룹 확인). 제출할 때 전체 데이터가 필요합니다. 누구든지이 문제에 대해 도움이 될 수 있습니다. 목록 항목을 렌더링하는 동안 android의리스트 뷰에있는 Radiogroup

이 어댑터 의 getView() 방법에서 내의 getView

public View getView(final int position, View convertView, ViewGroup parent) { 
    View view = convertView; 
    final ViewHolder viewHolder = new ViewHolder(); 
    view = View.inflate(mContext, R.layout.item_list_bradenscale_entry, null); 

    viewHolder.txtQuestionHeadName = (TextView) view.findViewById(R.id.textview_question_name); 
    viewHolder.radioGroup = (RadioGroup) view.findViewById(R.id.radio_group); 
    viewHolder.radioButtonOption1 = (RadioButton) view.findViewById(R.id.radio1); 
    viewHolder.radioButtonOption2 = (RadioButton) view.findViewById(R.id.radio2); 
    viewHolder.radioButtonOption3 = (RadioButton) view.findViewById(R.id.radio3); 
    viewHolder.radioButtonOption4 = (RadioButton) view.findViewById(R.id.radio4); 
    viewHolder.txtQuestionHeadHint = (TextView) view.findViewById(R.id.textview_question_hint); 
    viewHolder.txtOption1Hint = (TextView) view.findViewById(R.id.textview_option1Hint); 
    viewHolder.txtOption2Hint = (TextView) view.findViewById(R.id.textview_option2Hint); 
    viewHolder.txtOption3Hint = (TextView) view.findViewById(R.id.textview_option3Hint); 
    viewHolder.txtOption4Hint = (TextView) view.findViewById(R.id.textview_option4Hint); 
    view.setTag(viewHolder); 
    selectedList = new 
    final DataContractQuestionList myDataitem = arrData.get(position); 
    viewHolder.txtQuestionHeadName.setText(myDataitem.QuestionTitle); 
    viewHolder.txtQuestionHeadHint.setText(myDataitem.QuestionHint); 


    viewHolder.radioButtonOption1.setText(myDataitem.QuestionOptions.get(0).OptionTitle); 
    viewHolder.radioButtonOption2.setText(myDataitem.QuestionOptions.get(1).OptionTitle); 
    viewHolder.radioButtonOption3.setText(myDataitem.QuestionOptions.get(2).OptionTitle); 
    viewHolder.txtOption1Hint.setText(myDataitem.QuestionOptions.get(0).OptionHint); 
    viewHolder.txtOption2Hint.setText(myDataitem.QuestionOptions.get(1).OptionHint); 
    viewHolder.txtOption3Hint.setText(myDataitem.QuestionOptions.get(2).OptionHint); 
    if (myDataitem.QuestionOptions.size() < 4) { 
     viewHolder.radioButtonOption4.setVisibility(View.INVISIBLE); 
     viewHolder.txtOption4Hint.setVisibility(View.INVISIBLE); 
    } else { 
     viewHolder.radioButtonOption4.setText(myDataitem.QuestionOptions.get(3).OptionTitle); 
     viewHolder.txtOption4Hint.setText(myDataitem.QuestionOptions.get(3).OptionHint); 
     viewHolder.radioButtonOption4.setChecked(myDataitem.QuestionOptions.get(3).checkedStatus); 

    } 


    viewHolder.radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      int selectedRadioButton = group.getCheckedRadioButtonId(); 
      View radioButton = group.findViewById(selectedRadioButton); 
      int radioId = group.indexOfChild(radioButton); 

      if (radioId/2 == 0) { 
       viewHolder.radioButtonOption1.setChecked(true); 
       myDataitem.QuestionOptions.get(0).checkedStatus = true; 
       myDataitem.QuestionOptions.get(1).checkedStatus = false; 
       myDataitem.QuestionOptions.get(2).checkedStatus = false; 
       if (myDataitem.QuestionOptions.size() == 4) { 

        myDataitem.QuestionOptions.get(3).checkedStatus = false; 
       } 
      } else if (radioId/2 == 1) { 
       viewHolder.radioButtonOption2.setChecked(true); 
       myDataitem.QuestionOptions.get(0).checkedStatus = false; 
       myDataitem.QuestionOptions.get(1).checkedStatus = true; 
       myDataitem.QuestionOptions.get(2).checkedStatus = false; 
       if (myDataitem.QuestionOptions.size() == 4) { 

        myDataitem.QuestionOptions.get(3).checkedStatus = false; 
       } 
      } else if (radioId/2 == 2) { 
       viewHolder.radioButtonOption3.setChecked(true); 
       myDataitem.QuestionOptions.get(0).checkedStatus = false; 
       myDataitem.QuestionOptions.get(1).checkedStatus = false; 
       myDataitem.QuestionOptions.get(2).checkedStatus = true; 
       if (myDataitem.QuestionOptions.size() == 4) { 

        myDataitem.QuestionOptions.get(3).checkedStatus = false; 
       } 
      } else if (radioId/2 == 3) { 
       if (myDataitem.QuestionOptions.size() == 4) { 
        viewHolder.radioButtonOption4.setChecked(true); 
        myDataitem.QuestionOptions.get(0).checkedStatus = false; 
        myDataitem.QuestionOptions.get(1).checkedStatus = false; 
        myDataitem.QuestionOptions.get(2).checkedStatus = false; 
        myDataitem.QuestionOptions.get(3).checkedStatus = true; 

       } 
      } 

     } 
    }); 


    viewHolder.radioButtonOption1.setChecked(myDataitem.QuestionOptions.get(0).checkedStatus); 
    viewHolder.radioButtonOption2.setChecked(myDataitem.QuestionOptions.get(1).checkedStatus); 
    viewHolder.radioButtonOption3.setChecked(myDataitem.QuestionOptions.get(2).checkedStatus); 
    return view; 
} 
+0

선택한 상태를 저장하려면 동일한 배열을 사용하십시오. 그런 다음 상태에 따라 확인 된 데이터를 가져 와서 보낼 수 있습니다. –

+0

게시 됨 내 getview() – Sri

답변

0

이다, 라디오 버튼에 리스너를 연결합니다. on checked 이벤트에서 객체의 속성을 변경합니다. 귀하의 활동은 동일한 객체 목록에 액세스하고 최신 설문지 상태를 검색 할 수 있습니다.

rGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() 
{ 
    public void onCheckedChanged(RadioGroup group, int checkedId) 
    { 
     // This will get the radiobutton that has changed in its check state 
     RadioButton checkedRadioButton = (RadioButton)group.findViewById(checkedId); 
     // This puts the value (true/false) into the variable 
     boolean isChecked = checkedRadioButton.isChecked(); 
     // If the radiobutton that has changed in check state is now checked... 
     if (isChecked) 
     { 
      //Change your object's attribute here 
      question.answer = "xxxx"; 
     } 
    } 
}); 
+0

질문에 대한 답변이 없으면 rGroup.setOnCheckedChangeListener()가 어떻게 호출됩니까? – Sri

+0

답변이없는 경우 질문의 기본 상태로 유지됩니다. 예 : answers = false. 그것은 작동하지 않습니까? –