Как использовать supportFragmentManager из адаптера?

В моем фрагменте лежат cardView, в адаптере я прописал логику удаления выбранного cardView, она удаляется корректно, но проблема в том, что фрагмент нужно обновлять, но как это делать из адаптера?

LessonsAdapter.kt:

class LessonsAdapter(var lessons: List<Lesson>, var context: Context):
RecyclerView.Adapter<LessonsAdapter.MyViewHolder>() {
lateinit var binding: RemoveOrEditDialogBinding
class MyViewHolder(view: View): RecyclerView.ViewHolder(view){
    val lessonDay: TextView = view.findViewById(R.id.lesson_list_day)
    val lessonTime: TextView = view.findViewById(R.id.lesson_list_time)
    val lessonName: TextView = view.findViewById(R.id.lesson_list_name)
    val lessonTeacherName: TextView = view.findViewById(R.id.lesson_list_teacher_name)
    val lessonClassroom: TextView = view.findViewById(R.id.lesson_list_classroom)
}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
    val view = LayoutInflater.from(parent.context).inflate(R.layout.lesson_in_list, parent, false)
    return MyViewHolder(view)
}

override fun getItemCount(): Int {
    return lessons.count()
}

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
    holder.lessonClassroom.text = lessons[position].classroom
    holder.lessonTeacherName.text = lessons[position].teacherName
    holder.lessonDay.text = lessons[position].day
    holder.lessonName.text = lessons[position].lessonName + " (" + lessons[position].lessonType + ")"
    holder.lessonTime.text = lessons[position].timeStart + " - " + lessons[position].timeEnd

    holder.itemView.setOnClickListener {
        val dialog = Dialog(context)
        dialog.setContentView(R.layout.remove_or_edit_dialog)
        dialog.show()
        val textDelete: TextView = dialog.findViewById(R.id.delete_lesson)
        val textEdit: TextView = dialog.findViewById(R.id.edit_lesson)

        textDelete.setOnClickListener {
            val db = DbHelper(context, null)
            db.writableDatabase
            db.delLesson(lessons[position])
            dialog.dismiss()

            //Пытаюсь обновить фрагмент, но не видит supportFragmentManager
            supportFragmentManager
                .beginTransaction()
                .replace(R.id.schedule, FirstWeekFragment.newInstance())
                .commit()
        }

        textEdit.setOnClickListener {
            //TODO open edit activity
        }
    }
}

}


Ответы (1 шт):

Автор решения: Wlad

прокинуть колбэк клика по элементу.
т.е. изменить код следующим образом:

class LessonsAdapter(var lessons: List<Lesson>, var context: Context, val onClick:()->Unit)
...
 holder.itemView.setOnClickListener {
        val dialog = Dialog(context)
        dialog.setContentView(R.layout.remove_or_edit_dialog)
        dialog.show()
        val textDelete: TextView = dialog.findViewById(R.id.delete_lesson)
        val textEdit: TextView = dialog.findViewById(R.id.edit_lesson)
        onClick.invoke()
...
val adapter = LessonsAdapter(массив, контекст){
supportFragmentManager
                .beginTransaction()
                .replace(R.id.schedule, FirstWeekFragment.newInstance())
                .commit()
}
→ Ссылка