I have RecyclerView and in the RowItem layout I have RadioGroup and in them, I Have Two RadioButton. if I select First Item and scroll to the bottom, the 8th, 16th,... so checked:| How handle it?
tnx for the answer .. if you need any info .. I put the theme
ques_item_row.xml
<RadioGroup
android:id="@+id/ques_radio_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_ques_title"
android:layout_gravity="end|center"
android:gravity="start"
android:orientation="vertical"
android:textAlignment="textStart"
android:textDirection="rtl">
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/first_ques"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="end|right"
android:layout_margin="@dimen/quest_margin"
android:gravity="end|right"
android:checked="false"
android:padding="@dimen/quest_padding"
android:text="@{question.firstQuest}"
android:textColor="@color/ques"
android:textDirection="ltr"
android:textSize="@dimen/text_ques"
/>
<android.support.v7.widget.AppCompatRadioButton
android:id="@+id/second_ques"
android:layout_below="@+id/first_ques"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="end|right"
android:layout_margin="@dimen/quest_margin"
android:gravity="end|right"
android:checked="false"
android:padding="@dimen/quest_padding"
android:text="@{question.secondQuest}"
android:textColor="@color/ques"
android:textDirection="ltr"
android:textSize="@dimen/text_ques"
/>
</RadioGroup>
Question.java
public class Question {
private String questNum;
private String questTitle;
private String firstQuest;
private String secondQuest;
private int score = 0;
private int firstQuestScore = 2;
private int secondQuestScore = 3;
private boolean isFirstChecked;
private boolean isSecondChecked;
public Question(String questNum, String questTitle, String firstQuest, String secondQuest) {
this.questTitle = questTitle;
this.firstQuest = firstQuest;
this.secondQuest = secondQuest;
this.questNum = questNum;
}
public Question() {
}
public String getQuestTitle() {
return questTitle;
}
public void setQuestTitle(String questTitle) {
this.questTitle = questTitle;
}
public String getFirstQuest() {
return firstQuest;
}
public void setFirstQuest(String firstQuest) {
this.firstQuest = firstQuest;
}
public String getSecondQuest() {
return secondQuest;
}
public void setSecondQuest(String secondQuest) {
this.secondQuest = secondQuest;
}
public String getQuestNum() {
return questNum;
}
public void setQuestNum(String questNum) {
this.questNum = questNum;
}
public boolean isFirstChecked() {
return isFirstChecked;
}
public void setFirstChecked(boolean firstChecked) {
isFirstChecked = firstChecked;
}
public boolean isSecondChecked() {
return isSecondChecked;
}
public void setSecondChecked(boolean secondChecked) {
isSecondChecked = secondChecked;
}
public int getScore() {
return score;
}
public void setScore(int questNum, int questScore) {
this.score = ((questNum * questScore) + questNum);
}
public int getFirstQuestScore() {
return firstQuestScore;
}
public void setFirstQuestScore(int firstQuestScore) {
this.firstQuestScore = firstQuestScore;
}
public int getSecondQuestScore() {
return secondQuestScore;
}
public void setSecondQuestScore(int secondQuestScore) {
this.secondQuestScore = secondQuestScore;
}
public void mathScore(int questNum, int questScore) {
}
}
QuestionAdapter.java
public class MbtiQuestAdapter extends RecyclerView.Adapter<MbtiQuestAdapter.MbtiQuestViewHolder> {
private Context context;
private List<Question> questionList;
private LayoutInflater layoutInflater;
private FloatingActionButton fabResult;
private CoordinatorLayout coordinator;
private int checkRadio = 0;
private Snackbar snackbar;
private int totalScore = 0;
private static final String TAG = "MbtiQuestAdapter";
public MbtiQuestAdapter(Context context, List<Question> questionList, FloatingActionButton fab, CoordinatorLayout coordinator) {
this.context = context;
this.questionList = questionList;
this.fabResult = fab;
this.coordinator = coordinator;
}
@NonNull
@Override
public MbtiQuestViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (layoutInflater == null) {
layoutInflater = LayoutInflater.from(context);
}
QuesItemRowBinding binding = DataBindingUtil.inflate(layoutInflater,
R.layout.ques_item_row, parent, false);
return new MbtiQuestViewHolder(binding);
}
@Override
public void onBindViewHolder(@NonNull final MbtiQuestViewHolder holder, final int position) {
final Question question = questionList.get(position);
holder.binding.setQuestion(question);
//Fix the select the radio Button when first Select 8th and... do not selected
//************************************************************
//Check if all question do not click do not allow go to the next page
holder.binding.quesRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (holder.binding.firstQues.isChecked() || holder.binding.secondQues.isChecked()) {
checkRadio++;
} else {
// snackbar = Snackbar.make(coordinator, R.string.choose_one_of_theme, Snackbar.LENGTH_INDEFINITE);
// snackbar.show();
}
}
});
if (fabResult != null) {
fabResult.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (checkRadio == 60) {
context.startActivity(new Intent(context, ResultActivity.class));
totalScore = 0;
for (int i = 0; i < 60; i++) {
totalScore = totalScore + question.getScore();
Log.i(TAG, "TotalScore: " + totalScore);
}
switch (totalScore) {
}
} else {
snackbar = Snackbar.make(coordinator, R.string.check_all_ques_err, Snackbar.LENGTH_SHORT);
snackbar.show();
}
}
}
);
//*************************************************************
}
}
@Override
public int getItemCount() {
return questionList.size();
}
public class MbtiQuestViewHolder extends RecyclerView.ViewHolder {
private QuesItemRowBinding binding;
public MbtiQuestViewHolder(QuesItemRowBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
}
}
please help me .. I add some screenshot too ... tnx a lot
I tried this code but not worked:
holder.binding.firstQues.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
question.setFirstChecked(holder.binding.firstQues.isChecked());
holder.binding.firstQues.setChecked(holder.binding.firstQues.isChecked());
question.setSecondChecked(false);
holder.binding.secondQues.setChecked(false);
}
});
holder.binding.secondQues.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
question.setFirstChecked(false);
holder.binding.firstQues.setChecked(false);
question.setSecondChecked(holder.binding.secondQues.isChecked());
holder.binding.secondQues.setChecked(holder.binding.secondQues.isChecked());
}
});
holder.binding.firstQues.setChecked(question.isFirstChecked());
holder.binding.secondQues.setChecked(question.isSecondChecked());