setChecked с переключателем не работает должным образом - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть несколько кнопок переключателей, которые я создаю в соответствии с размером представления списка, и когда более двух переключателей включены, я хочу отключить их. Но когда я делаю aSwitch.setChecked(false), отключается только последний.

Вот мой код:

 @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            LayoutInflater inflater = context.getLayoutInflater();
            View rowView = inflater.inflate(R.layout.row, null, true);

            TextView infos = (TextView) rowView.findViewById(R.id.info);
            Switch aSwitch = (Switch) rowView.findViewById(R.id.switch_btn);

            infos.setText(info.get(position));
            String[] val_info = new String[1];

            SharedPreferences estado = getSharedPreferences("estado", MODE_PRIVATE);
            aSwitch.setChecked(false);
            SharedPreferences.Editor editor = estado.edit();

            cod.clear();

            aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    String str = info.get(position);
                    int index = str.indexOf(" -");
                    str = str.substring(0, index);

                    if (isChecked) {
                        Log.i("CHECK", String.valueOf(isChecked));
                        editor.putString("codigo", str);
                        cod.add(true);
                    }
                    else {
                        editor.clear();
                        cod.clear();
                    }

                    editor.commit();

                    Log.i("CODIGO", estado.getString("codigo",""));
                    Log.i("COD", cod.toString());
                }
            });

            btn_ok = (Button) findViewById(R.id.ok_btn);

            SharedPreferences camera_info = getSharedPreferences("camera", MODE_PRIVATE);
            SharedPreferences.Editor camera_editor = camera_info.edit();

            btn_ok.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Log.i("COD", cod.toString());
                    if (cod.size() == 1 ) {

                        Log.i("UM", "UM");

                        val_info[0] = estado.getString("codigo", "");
                        Toast.makeText(getBaseContext(), val_info[0], Toast.LENGTH_SHORT).show();
                        //Log.i("CAMERA_CODIGO", val_info[0]);

                        //camera_editor.putString("camCode", val_info[0]);
                        //camera_editor.commit();

                        //Intent camera = new Intent(PegarInfo .this, EntryPoint.class);
                        //camera.putExtra("cam", true);
                        //startActivity(camera);
                    } else if(cod.size() >= 2){
                        Log.i("DOIS", "DOIS");
                        Toast.makeText(getBaseContext(), "Selecione apenas uma opção", Toast.LENGTH_SHORT).show();

                        aSwitch.setChecked(false);

                        //editor.remove("codigo");
                    } else {
                        Log.i("TRES", "TRES");
                        Toast.makeText(getBaseContext(), "Nenhuma opção selecionada", Toast.LENGTH_SHORT).show();
                    }
                }
            });

            return rowView;
...