Как подключить switchButton к своему объекту в каждом item-e в RecycleView?
Коллеги, подскажите пожалуйста новичку как прописать в RecyclerViewAdapter такую связь.
У меня объект Word - это шведское слово, его русский перевод и знаxение int status (определяет в каком разделе слово появляется, в данном случае оно 200 либо 300).
Вопрос такой: как прописать чтобы switch-кнопка в элементе RecycleView (рычажок "switchStatus") меняла в БД room статус слова с 200 на 300 (т.е. чтобы она вызывала действие wordViewModel.update(word); с соответствующим изменением поля status) (200 при true, 300 при false)?
public class WordAdapter extends RecyclerView.Adapter<WordAdapter.WordHolder> {
private List<Word> words = new ArrayList<>();
@NonNull
@Override
public WordHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.word_item, parent, false);
return new WordHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull WordHolder holder, int position) {
Word currentWord = words.get(position);
holder.textViewSwedish.setText(currentWord.getSwedish());
holder.textViewRussian.setText(currentWord.getRussian());
holder.switchStatus.set//??????????;
}
class WordHolder extends RecyclerView.ViewHolder {
private TextView textViewSwedish;
private TextView textViewRussian;
private Switch switchStatus;
public WordHolder(@NonNull View itemView) {
super(itemView);
textViewSwedish = itemView.findViewById(R.id.text_view_swedish);
textViewRussian = itemView.findViewById(R.id.text_view_russian);
switchStatus = itemView.findViewById(R.id.btn_switch);
}
}
}
Это основное активити, в котором списки слов будут отображаться на экране:
public class WordList extends AppCompatActivity {
private WordViewModel wordViewModel;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setHasFixedSize(true);
final WordAdapter adapter = new WordAdapter();
recyclerView.setAdapter(adapter);
wordViewModel = new ViewModelProvider(this,
ViewModelProvider.AndroidViewModelFactory.getInstance(this.getApplication())).get(WordViewModel.class);
wordViewModel.getAllWords().observe(this, new Observer<List<Word>>() {
@Override
public void onChanged(List<Word> words) {
adapter.setWords(words);
}
});
}
Это сам объект Word:
@Entity(tableName = "word_table")
public class Word {
@PrimaryKey(autoGenerate = true)
private int id;
private String russian;
private String swedish;
private int status;
public Word(String russian, String swedish, int status) {
this.russian = russian;
this.swedish = swedish;
this.status = status;
}