链接按钮与列表视图中的所选单选按钮

时间:2016-05-22 16:24:21

标签: android listview android-arrayadapter

目标

出于学习目的,我创建了custom list view 5 itemsEach 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

当用户点击检查按钮时,它必须找到所选的单选按钮并检查答案。答案也将成为问题类的一部分。结果。

我该怎么做?我坚持这个。我无法找到如何链接它?

如果是html,我可以为保留Id的{​​{1}}设置div,点击按钮,我将获得父ID和父ID可以选择单选按钮,我可以根据所选值检查存储的答案。

更多解释

row item

这就是我的布局的样子。正如您在我的 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 :(

有什么建议吗?

1 个答案:

答案 0 :(得分: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时将其连接起来。