Подскажите плиз, как сделать чтобы в зависимости от значения level в объекте Word в базе, switchButton внутри соответствующего itemView при загрузке активити заранее становился checked (в случае 200) или выключен (в случае 300)?
В адаптере:
private OnToggleChangeListener myListener;
public interface OnToggleChangeListener {
void onToggleChange(Word word, boolean isChecked);
}
protected WordListAdapter(@NonNull DiffUtil.ItemCallback<Word> diffCallback, OnToggleChangeListener listener) {
super(diffCallback);
myListener = listener;
}
public void onBindViewHolder(@NonNull WordViewHolder holder, int position) {
Word currentWord = getItem(position);
holder.btnSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (isChecked) {
myListener.onToggleChange(currentWord, true);
buttonView.setChecked(true);
buttonView.setText("On");
} else if (!isChecked) {
myListener.onToggleChange(currentWord, false);
buttonView.setChecked(false);
buttonView.setText("Off");
}
});
В MainActivity:
@Override
public void onToggleChange(Word word, boolean isChecked) {
if (isChecked) {
word.setLevel(200);
} else {
word.setLevel(300);
}
mWordViewModel.update(word);
}
Объект:
@Entity(tableName = "word_table")
public class Word {
@PrimaryKey(autoGenerate = true)
@NonNull
private int id;
@NonNull
private int level;
При запуске активити (и не только) метод onBindViewHolder
будет выполняться снова. Значит это отличное место для установки состояния, каких либо view
. У вас уже есть установка состояния, НО только по нажатию на switchButton. Вам нужно выше установить состояние switchButton, не дожидаясь нажатия. Пример:
public void onBindViewHolder(@NonNull WordViewHolder holder, int position) {
Word currentWord = getItem(position);
if (currentWord.level == 200) {
buttonView.setChecked(true);
buttonView.setText("On");
} else {
buttonView.setChecked(false);
buttonView.setText("Off");
}
holder.btnSwitch.setOnCheckedChangeListener((buttonView, isChecked) -> {
if (isChecked) {
myListener.onToggleChange(currentWord, true);
buttonView.setChecked(true);
buttonView.setText("On");
} else if (!isChecked) {
myListener.onToggleChange(currentWord, false);
buttonView.setChecked(false);
buttonView.setText("Off");
}
});
Создал массив из 10 чисел: 0 и 1, инициализировал каждый индекс массива как 0 или 1Написал цикл: