У меня есть несколько кнопок переключателей, которые я создаю в соответствии с размером представления списка, и когда более двух переключателей включены, я хочу отключить их. Но когда я делаю 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;