Нажатие RadioButton "A" переключает RadioButton "B" RecyclerView

У меня есть RecyclerView, который отображает список радиокнопок стран, чтобы позволить пользователю выбрать свою страну. Я не хочу больше, чем при нажатии элемента, поэтому я написал этот OnCheckListener в методе onBindView адаптера, но всякий раз, когда я нажимаю RadioButton, несколько других кнопок переключаются с ним.

    @Override
    public void onBindViewHolder(final com.example.ameer.ta7adialma3rifa.adapters.CountriesAdapter.ViewHolder holder, final int position) {
        String name = mData.get(position).getName();
        int imgId = mData.get(position).getImageId();
        holder.radioButton.setText(name);
        holder.flagImageView.setImageResource(imgId);
        holder.radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                RadioButton button = (RadioButton) compoundButton;
                if (!button.getText().equals(mData.get(position).getName())){
                    button.setChecked(false);
                }
                if (runnable != null){
                    runnable.run();
                }
                runnable = new Runnable() {
                    @Override
                    public void run() {
                        holder.radioButton.setChecked(false);
                    }
                };
            }
        });
    }

1 ответ

Вы должны поместить свои радио кнопки в группу радио. таким образом, выбирается только один из них. и я не знаю, почему используется runnable для установки переключателя! Я надеюсь, это поможет вам.

Другие вопросы по тегам