Помогите мне исправить эту ошибку ... У меня есть viewpager2 и я использую RecyclerView.Adapter для создания элемента фрагмента динамического c в viewpager2. Внутри фрагмента есть радиогруппа и 4 радиокнопки. Но когда я проверяю вопрос № 9 и перехожу к вопросу № 4, возникает ошибка, переключатель автоматически проверяется. Как исправить эту ошибку? я покажу ошибку с видео https://www.youtube.com/watch?v=v-s-kCrcOfA&feature=youtu.be
И это ссылка моего кода https://github.com/lordrians/TransGeo
Это действие для вопрос
public class SoalActivity extends AppCompatActivity implements View.OnClickListener {
private Button btnNext, btnPrev, btnAkhiriUjian;
private Dialog popDialogVerif;
private ViewPager2 vpSoal;
private View popupView;
private int jmlSoal;
private SharedPreferences sharedPreferences;
private Toolbar toolbar;
private String pilihanSoal;
private ViewPagerSoalAdapter SoalAdapter;
private TabLayout tabLayout ;
private ArrayList<String> soalKosong = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_soal);
btnNext = findViewById(R.id.btn_next_soal);
btnPrev = findViewById(R.id.btn_prev_soal);
btnAkhiriUjian = findViewById(R.id.btn_akhiri_ujian);
popDialogVerif = new Dialog(this);
vpSoal = findViewById(R.id.vp_soal);
tabLayout = findViewById(R.id.tl_soal);
toolbar = findViewById(R.id.tb_soal);
setSupportActionBar(toolbar);
toolbar.setNavigationIcon(R.drawable.ic_arrow_back_black);
sharedPreferences = getSharedPreferences(GlobalVar.MYFILE_SP_SOAL,0);
btnPrev.setOnClickListener(this);
btnNext.setOnClickListener(this);
btnAkhiriUjian.setOnClickListener(this);
pilPaketSoal();
connTabLayoutAndVp();
toolbar.setNavigationOnClickListener(view -> {
finish();
});
}
private void connTabLayoutAndVp() {
TabLayoutMediator tabLayoutMediator = new TabLayoutMediator(tabLayout, vpSoal, new TabLayoutMediator.TabConfigurationStrategy() {
@Override
public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
tab.setText(String.valueOf(position+1));
}
});
tabLayoutMediator.attach();
}
private void pilPaketSoal() {
pilihanSoal = getIntent().getStringExtra(GlobalVar.PILIHAN_SOAL);
if (pilihanSoal.equals(GlobalVar.SOAL_UJIAN)){
SoalAdapter = new ViewPagerSoalAdapter(this, DtSoalUjian.getSoalUjian());
jmlSoal = DtSoalUjian.getSoalUjian().size();
storeSharedPreference();
vpSoal.setAdapter(SoalAdapter);
}
}
private void storeSharedPreference() {
SharedPreferences.Editor editor = sharedPreferences.edit();
for (int i = 0; i < jmlSoal; i++){
editor.putInt(GlobalVar.SOAL_NUM_ + i,-1);
}
editor.apply();
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn_prev_soal:
prev_fragment(view);
break;
case R.id.btn_next_soal:
next_fragment(view);
break;
case R.id.btn_akhiri_ujian:
int jmlJawaban = ViewPagerSoalAdapter.listSoal.size();
int jawabanUser;
int jawabanBenar = 0, jawabanSalah = 0;
for (int i = 0; i < jmlJawaban; i++){
jawabanUser = sharedPreferences.getInt(GlobalVar.SOAL_NUM_ + i, 0);
if (jawabanUser == 0){
jawabanSalah += 1;
} else if (jawabanUser == 1){
jawabanBenar += 1;
} else {
jawabanSalah += 1;
soalKosong.add(String.valueOf(i+1));
}
}
ShowPopUp(jawabanBenar, jawabanSalah);
break;
}
}
@SuppressLint("SetTextI18n")
private void ShowPopUp( int jawabanBenar, int jawabanSalah) {
TextView tvJwbKosong;
Button btnKembali, btnKumpulkan;
DisplayMetrics metrics = getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
LayoutInflater inflater = this.getLayoutInflater();
popupView = inflater.inflate(R.layout.popup_verifikasi_selesai,null);
tvJwbKosong = popupView.findViewById(R.id.tv_jwb_kosong);
btnKembali = popupView.findViewById(R.id.btn_popup_kembali);
btnKumpulkan = popupView.findViewById(R.id.btn_popup_kumpulkan);
int hasil = jawabanBenar * 100 / jmlSoal;
btnKembali.setOnClickListener(view -> {
soalKosong.clear();
popDialogVerif.dismiss();
});
btnKumpulkan.setOnClickListener(view -> {
Intent intent = new Intent(getApplicationContext(), FinishUjianActivity.class);
intent.putExtra(GlobalVar.BENAR, jawabanBenar);
intent.putExtra(GlobalVar.SALAH, jawabanSalah);
intent.putExtra(GlobalVar.SCORE, hasil);
startActivity(intent);
finish();
});
popDialogVerif.setContentView(popupView);
popDialogVerif.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
popDialogVerif.getWindow().setLayout((6*width)/7, (4*height)/5);
if (soalKosong.isEmpty()){
tvJwbKosong.setVisibility(View.GONE);
} else {
Toast.makeText(getApplicationContext(), soalKosong.toString(), Toast.LENGTH_LONG).show();
tvJwbKosong.setText(getResources().getText(R.string.kamu_belum) + soalKosong.toString());
}
popDialogVerif.show();
}
private void next_fragment(View view) {
if (vpSoal.getCurrentItem() != 0){
vpSoal.setCurrentItem(vpSoal.getCurrentItem()-1);
}
}
private void prev_fragment(View view) {
if (vpSoal.getCurrentItem() < ViewPagerSoalAdapter.listSoal.size()){
vpSoal.setCurrentItem(vpSoal.getCurrentItem()+1);
}
}
}
Это мой адаптер для пейджера
public class ViewPagerSoalAdapter extends RecyclerView.Adapter<ViewPagerSoalAdapter.MyViewHolder> {
public static ArrayList<Soal> listSoal;
private Context context;
private TabLayout tabLayout;
private SharedPreferences sharedPreferences;
private View parentLayout;
public ViewPagerSoalAdapter(Context context, ArrayList<Soal> listSoal) {
this.context = context;
this.listSoal = listSoal;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.item_soal, parent, false);
View parentLayout = parent.getRootView();
tabLayout = parentLayout.findViewById(R.id.tl_soal);
sharedPreferences = context.getSharedPreferences(GlobalVar.MYFILE_SP_SOAL, 0);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.tvSoal.setText(listSoal.get(position).getSoal());
holder.rbPgA.setText(listSoal.get(position).getPgA());
holder.rbPgB.setText(listSoal.get(position).getPgB());
holder.rbPgC.setText(listSoal.get(position).getPgC());
holder.rbPgD.setText(listSoal.get(position).getPgD());
if (!listSoal.get(position).getPhotoSoal().isEmpty()){
holder.ivSoal.setVisibility(View.VISIBLE);
Glide.with(context)
.load(listSoal.get(position).getPhotoSoal())
.apply(new RequestOptions().fitCenter())
.into(holder.ivSoal);
} else {
holder.ivSoal.setVisibility(View.GONE);
}
}
@Override
public int getItemCount() {
return listSoal.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView tvSoal;
ViewPager vpSoal;
ImageView ivSoal;
RadioButton rbPgA,rbPgB,rbPgC,rbPgD,rbCheck;
RadioGroup rgPg;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
tvSoal = itemView.findViewById(R.id.tv_soal);
rbPgA = itemView.findViewById(R.id.rb_pg_a);
rbPgB = itemView.findViewById(R.id.rb_pg_b);
rbPgC = itemView.findViewById(R.id.rb_pg_c);
rbPgD = itemView.findViewById(R.id.rb_pg_d);
rgPg = itemView.findViewById(R.id.rg_pilihan_ganda);
vpSoal = itemView.findViewById(R.id.vp_soal);
ivSoal = itemView.findViewById(R.id.iv_soal);
rgPg.setOnCheckedChangeListener((radioGroup, i) -> {
rbCheck = radioGroup.findViewById(i);
String JwbUser = rbCheck.getText().toString();
int select =tabLayout.getSelectedTabPosition();
TabLayout.Tab se = tabLayout.getTabAt(select);
se.view.setBackgroundResource(R.drawable.selector_answered_tab_soal);
if (JwbUser.equals(listSoal.get(getAdapterPosition()).getCorrectAns())){
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt(GlobalVar.SOAL_NUM_ + getAdapterPosition(), 1);
editor.apply();
} else {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt(GlobalVar.SOAL_NUM_ + getAdapterPosition(), 0);
editor.apply();
}
});
}
}
}