2016-05-22 1 views
0

ЦельКнопка Link с выбранной радио-кнопки в списке

Для учебных целей я создал custom list view с 5 items. Each Item будет question, choices, check кнопка.

@Override 
public View getView(int pos, View row, ViewGroup parent){ 

    this.view = row; 
    ViewHolder viewHolder = null; 

    if(row == null) { 
     LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
     row = inflater.inflate(R.layout.list_item_row_qs, null); 
     viewHolder = new ViewHolder(); 
     viewHolder.chapName=(TextView) row.findViewById(R.id.question); 
     viewHolder.rb0 = (RadioButton) row.findViewById(R.id.choice0); 
     viewHolder.rb1 = (RadioButton) row.findViewById(R.id.choice1); 
     viewHolder.rb2 = (RadioButton) row.findViewById(R.id.choice2); 
     viewHolder.rb3 = (RadioButton) row.findViewById(R.id.choice3); 
     viewHolder.button = (Button) row.findViewById(R.id.check); 
     row.setTag(viewHolder); 
    } 
    else { 
     viewHolder = (ViewHolder)row.getTag(); 
    } 
    viewHolder.chapName.setText(questions[pos].getQuestionDescr()); 
    viewHolder.rb0.setText(questions[pos].getChoice()[0]); 
    viewHolder.rb1.setText(questions[pos].getChoice()[1]); 
    viewHolder.rb2.setText(questions[pos].getChoice()[2]); 
    viewHolder.rb3.setText(questions[pos].getChoice()[3]); 
    //viewHolder.button.setId(pos); 
    //viewHolder.rg.setId(pos); 
    /* viewHolder.button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //Toast.makeText(context, ((RadioButton) view.findViewById(((RadioGroup) view.findViewById(R.id.rg)).getCheckedRadioButtonId()))+"", Toast.LENGTH_LONG).show(); 

     } 
    });*/ 

    return row; 
} 

Вот как я установил свои предметы. Как видите, у меня есть TextView, 1 radio group, 4 radio button, 1 button в держателе.

Question - класс, который содержит все содержимое каждой строки. Поэтому я прохожу array of question objects to this adapter.

Сомнение

Когда пользователь нажимает на кнопку проверки, он должен найти выбранную кнопку радио и проверки в отношении ответа. Ответ также будет частью класса Question.Toast.

Как это сделать? Я застрял на этом. Я не могу найти, как связать его?

Если html, я мог бы установить Id для div который держит row item и от нажатия кнопки, я получить идентификатор родительский и от родительского Id я могу получить выбранный переключатель, и я могу проверить сохраненный ответ против выбранного стоимость.

Больше объяснения

Question1 
    choice0 choice1 
    choice2 choice3 
        CHECK 
    Question2 
    choice0 choice1 
    choice2 choice3 
        CHECK 
    Question3 
    choice0 choice1 
    choice2 choice3 
        CHECK 
    Question4 
    choice0 choice1 
    choice2 choice3 
        CHECK 
    Question5 
    choice0 choice1 
    choice2 choice3 
        CHECK 

Это как мой макет будет выглядеть. Как вы видите в моем методе getView, я дал id для элементов самой компоновки. ?. Таким образом, он принимает тот же идентификатор для всех элементов :(

Любые предложения

ответ

0

OnClick проходит View, которая была нажата, то есть кнопка «проверить»

Так что вы можете сделать:

public void onClick(View v) { 
    View rowView = (ViewGroup) v.getParent(); 
    RadioGroup group = (RadioGroup) rowView.findViewById(R.id.rg); 
    long selectedId = group.getCheckedRadioButtonId(); 
    // Check if selected id is correct 
    Toast.makeText(context, "Correct!", Toast.LENGTH_LONG).show(); 
} 

Кроме того, поскольку OnClick код такой же, что лучше практика, чтобы создать только один раз и подключить его при создании ViewHolder.

 Смежные вопросы

  • Нет связанных вопросов^_^