Devices
スイッチのチェック状態を保存し、メソッドsetChecked(boolean)
で取得するクラスがあります。isChecked()
これを使用して、スイッチが切り替えられると、スイッチの状態を一度保存しています。
しかし、スイッチの状態をオンに変更すると、上下にスクロールしてスイッチに戻るたびにsetOnCheckedChangeListener
呼び出されます。これを防ぐにはどうすればよいですか?
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
DeviceHolder holder = null;
Devices devices = list.get(position);
String id = devices.id;
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new DeviceHolder();
holder.devTxt = (TextView) row.findViewById(R.id.devdesc);
holder.nameTxt = (TextView) row.findViewById(R.id.devname);
holder.toggleSwitch = (Switch) row.findViewById(R.id.toggleswitch);
holder.txt = (TextView) row.findViewById(R.id.debug);
final int i=id;
final Switch tswitch = holder.toggleSwitch;
holder.toggleSwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
//Comes here every time I scroll to a button that is ON
Control._service.write(i);
list.get(position).setChecked(tswitch.isChecked());
}
});
holder.devTxt.setText(devices.dev);
holder.nameTxt.setText(devices.name);
holder.txt.setText(id);
if (tswitch.isChecked() != devices.isChecked())
holder.toggleSwitch.setChecked(devices.isChecked());
return row;
}