Как отправить данные из фрагмента в адаптер?
Имеется CheckBox во фрагменте, и с помощью него у меня должен изменяться цвет объекта в адаптере. Как я понял, сделать это можно только через отправку данных в с фрагмента в адаптер. То есть если у CheckBox значение isChecked, то по нажатию на кнопку "Сохранить" в адаптере изменяется цвет объекта.
Код фрагмента:
class Fragment: Fragment() {
private lateinit var mDBViewModel: DBViewModel
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment1, container, false)
//Это кнопка сохранения записи во фрагменте
view.add_button.setOnClickListener {
insertDataToDataBase()
}
return view
}
private fun insertDataToDataBase() {
val Name = addName_ed.text.toString()
//Проверка на символы в EditText
if (inputCheck(Name)){
//Создание записи
val dB = DB(0, firstName)
//Добавление записи в БД
mDViewModel.addDB(db)
Toast.makeText(requireContext(),"Запись создана!", Toast.LENGTH_LONG).show()
if (CheckBox.isChecked){
//Под моим пониманием, именно здесь должна происходить проверка на отправку данных при нажатии на кнопку Сохранить
}
findNavController().navigate(R.id.action_Fragment_to_listFragment)
}
else{
Toast.makeText(requireContext(), "Пожалуйста, заполните строку заголовка.", Toast.LENGTH_SHORT).show()
}
}
}
Код адаптера:
class ListAdapter(private var mDBViewModel:DBViewModel): RecyclerView.Adapter<ListAdapter.MyViewHolder>() {
private var dBList = emptyList<DB>()
class MyViewHolder(itemView: View):RecyclerView.ViewHolder(itemView){
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
val viewFr = LayoutInflater.from(parent.context).inflate(R.layout.custom_r, parent, false)
return MyViewHolder(viewFr)
}
override fun getItemCount(): Int {
return DBList.size
}
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
val currentItem = DBList[position]
//Здесь, опять же, под моим пониманием должен происходить прием отправленных данных
holder.itemView.z_txt.text = currentItem.Name
}
fun setData(db: List<DB>){
this.DBList = db
notifyDataSetChanged()
}
}