Переключатель Android SetChecked не имеет никакого эффекта
У меня есть список номеров для включения / выключения света. Если в выбранной комнате есть тусклый свет, в нижней части списка я показываю SeekBar. Мой ListFragment:
@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(getLayoutId(), container, false);
final ListView lv = (ListView) view.findViewById(android.R.id.list);
registerForContextMenu(lv);
dimmerBar = (AppCompatSeekBar) view.findViewById(R.id.dimmerBar);
dimmerBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if (selectedLighting != null && selectedLighting.getTypeId() == LightingTypes.Dimmer) {
try {
final int dimmerState = seekBar.getProgress();
selectedLighting.setState(context, dimmerState);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Switch state = (Switch) selectedRowView.findViewById(R.id.state);
state.setChecked(dimmerState > 0);
}
});
} catch (Exception e) {
e.printStackTrace();
showException(e);
}
}
}
});
return view;
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
v.setSelected(true);
try {
selectedRowView = v;
Activity activity = getActivity();
if (activity != null && adapter != null) {
selectedLighting = adapter.getItem(position);
if (selectedLighting.getTypeId() == LightingTypes.Dimmer) {
dimmerBar.setVisibility(View.VISIBLE);
dimmerBar.setProgress(selectedLighting.getDimmerState());
} else {
dimmerBar.setVisibility(View.GONE);
}
}
} catch (Exception e) {
e.printStackTrace();
showException(e);
}
}
Для создания списка я использую следующий ArrayAdapter:
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.rowlayout_lighting, parent, false);
LightingModel lighting = values.get(position);
TextView textView = (TextView) rowView.findViewById(R.id.name);
final Switch state = (Switch) rowView.findViewById(R.id.state);
textView.setText(lighting.getName());
state.setChecked(lighting.getState());
state.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
LightingModel lighting = getItem(position);
try {
lighting.setState(context, isChecked);
if (stateChangedListener != null) {
stateChangedListener.onStateChanged(lighting);
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
return rowView;
}
Я изменю состояние swich на on или off, если переместить ползунок с 0 на x или с x на 0. Но setChecked не имеет никакого эффекта. Что не так с моим кодом?