Android RecyclerView duplicate ViewHolders单选按钮

Android RecyclerView duplicate ViewHolders单选按钮,android,android-recyclerview,Android,Android Recyclerview,我有一个问题的适配器,当我选择一个时,它们可能的答案会复制到适配器的其他部分,并出现在其他问题中,就好像我已经选择了它一样 试着从主通道通过,但没用 setHassTableId(true)和getItemId():getIdPojo public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCr

我有一个问题的适配器,当我选择一个时,它们可能的答案会复制到适配器的其他部分,并出现在其他问题中,就好像我已经选择了它一样

试着从主通道通过,但没用 setHassTableId(true)和getItemId():getIdPojo

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    RecyclerView rv = findViewById(R.id.rv_Preguntas);
    Adapter adapter = new Adapter(getLst());
    adapter.setHasStableIds(true);
    rv.setLayoutManager(new LinearLayoutManager(this));
    rv.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL));
    rv.setAdapter(adapter);
}

public List<Pojo> getLst(){
    List<Pojo>lst = new ArrayList<>();

    for(int i =1;i<35;i++){
        lst.add(new Pojo(i,"Pregunta "+i+"?",0));
    }

    return lst;
}}
public类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView rv=findViewById(R.id.rv_Preguntas);
适配器=新适配器(getLst());
adapter.setHassTableId(true);
rv.setLayoutManager(新直线布局经理(本));
rv.附加装饰(新的分区装饰(此为直线布局管理器垂直);
rv.设置适配器(适配器);
}
公共列表getLst(){
Listlst=newarraylist();

对于(inti=1;i我通过改变 setOnCheckedChangeListener 到 setOnClickListener setOnCheckedChangeListener事件即使在离开视野时也会被调用

    public class Adpater_VH extends RecyclerView.ViewHolder {
    TextView tv;
    RadioGroup rg;
    RadioButton rbSi, rbNO, rbNA;

    public Adpater_VH(View itemView) {
        super(itemView);
        tv = itemView.findViewById(R.id.tv_rv);
        rg = itemView.findViewById(R.id.rg_rv);
        rbSi = itemView.findViewById(R.id.rbItemSi_rv);
        rbNO = itemView.findViewById(R.id.rbItemNO_rv);
        rbNA = itemView.findViewById(R.id.rbItemNA_rv);
    }

    void bind(final Pojo pojo) {
        tv.setText(pojo.getPregunta());
        rg.clearCheck();
        Log.i("TAG-", pojo.getIdRegistro()+"bind: " + pojo.getIntRespuesta());
        switch (pojo.getIntRespuesta()) {
            case 1:
                rbSi.setChecked(true);
                break;
            case 2:
                rbNO.setChecked(true);
                break;
            case 3:
                rbNA.setChecked(true);
                break;
            default:
                rg.clearCheck();
                break;

        }

        rbSi.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(rbSi.isChecked()){
                    pojo.setIntRespuesta(1);
                }
            }
        });

    }
}
    public class Adpater_VH extends RecyclerView.ViewHolder {
    TextView tv;
    RadioGroup rg;
    RadioButton rbSi, rbNO, rbNA;

    public Adpater_VH(View itemView) {
        super(itemView);
        tv = itemView.findViewById(R.id.tv_rv);
        rg = itemView.findViewById(R.id.rg_rv);
        rbSi = itemView.findViewById(R.id.rbItemSi_rv);
        rbNO = itemView.findViewById(R.id.rbItemNO_rv);
        rbNA = itemView.findViewById(R.id.rbItemNA_rv);
    }

    void bind(final Pojo pojo) {
        tv.setText(pojo.getPregunta());
        rg.clearCheck();
        Log.i("TAG-", pojo.getIdRegistro()+"bind: " + pojo.getIntRespuesta());
        switch (pojo.getIntRespuesta()) {
            case 1:
                rbSi.setChecked(true);
                break;
            case 2:
                rbNO.setChecked(true);
                break;
            case 3:
                rbNA.setChecked(true);
                break;
            default:
                rg.clearCheck();
                break;

        }

        rbSi.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(rbSi.isChecked()){
                    pojo.setIntRespuesta(1);
                }
            }
        });

    }
}