Selecting one RadioButton value and scrolling back removing the selected one in RecyclerView

后端 未结 9 1887
温柔的废话
温柔的废话 2020-12-15 18:24

In my application am displaying 20 multiple choice questions with the help of RecyclerView.

If I change the value of first RadioGroup and s

9条回答
  •  萌比男神i
    2020-12-15 18:48

    Modify your onBindViewHolder() to this

    public void onBindViewHolder(ViewHolder viewHolder, int position) {
    
            final int pos = position;
    
            viewHolder.tvQuestionNumber.setText(stList.get(position).getQuestionNumber() + "");
    
            viewHolder.tvQuestion.setText(stList.get(position).getQuestion());
    
            viewHolder.rbAns1.setText(stList.get(position).getAnswer1());
    
            viewHolder.rbAns2.setText(stList.get(position).getAnswer2());
    
            viewHolder.rbAns3.setText(stList.get(position).getAnswer3());
    
            viewHolder.rbAns4.setText(stList.get(position).getAnswer4());
    
            viewHolder.rbAns5.setText(stList.get(position).getAnswer5());
    
            //viewHolder.rgAnswers.clearCheck();
    
            viewHolder.rgAnswers.setTag(position);
    
    
            Log.v("select" + position, stList.get(position).getSelectedRadioButtonId() + "");
    
            viewHolder.rgAnswers.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    // TODO Auto-generated method stub
                    int radioButtonID = group.getCheckedRadioButtonId();
                    View radioButton = group.findViewById(radioButtonID);
                    int clickedPos = (Integer) group.getTag();
    
    
                   stList.get(clickedPos).setSelectedRadioButtonId(radioButtonID);
    
                   // if you want to get selected button's info such as tag, text... etc.
                    RadioButton radioButton = (RadioButton) viewHolder.itemView.findViewById(radioButtonID);
    
                    if(radioButton != null) {
                        String customTag = radioButton.getTag().toString();
                        stList.get(clickedPos).setCustomTag(customTag);
                    }
    
    
                    Log.v("hello" + clickedPos, stList.get(clickedPos).getSelectedRadioButtonId() + "");
                }
            });
    
            viewHolder.rgAnswers.check(stList.get(position).getSelectedRadioButtonId());
    
        }
    

    It should work. If any issues please let me know.

提交回复
热议问题