Я создаю приложение календаря, в котором при щелчке по календарной дате появится AlertDialog
, в котором отображается список событий, добавленных в эту конкретную дату.
Я заполняю это диалоговое окно, используя пользовательский ArrayAdapter
. Я добавил кнопку удаления для каждого элемента.
Цель состоит в том, чтобы, когда пользователь нажимает кнопку удаления, появляется дополнительное всплывающее окно и просит пользователя подтвердить действие удаления.
Теперь проблема заключается в том, когда пользователь подтверждает удаление действие, я хочу закрыть диалоговое окно подтверждения (дочернее диалоговое окно) и удалить соответствующий элемент из родительского диалогового окна.
Как этого добиться? Пока это мой класс адаптера.
class EventDialogAdapter(
context: Context,
events: Array<EventItem>
) : ArrayAdapter<EventItem>(context, 0, events) {
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val view = convertView ?: LayoutInflater.from(parent.context)
.inflate(R.layout.item_dialog_event, parent, false)
val eventItem = getItem(position)
if (eventItem != null) {
view.findViewById<View>(R.id.colorView).setBackgroundColor(eventItem.color)
view.findViewById<TextView>(R.id.eventNameView).text = eventItem.eventName
// set close buton
val closeButton : ImageButton = view.findViewById<ImageButton>(R.id.btnDeleteEvent)
closeButton.setOnClickListener {
val dialogBuilder = AlertDialog.Builder(context)
// set message of alert dialog
dialogBuilder.setMessage(eventItem.eventName + ":\n\nAre you sure to delete this event?")
// if the dialog is cancelable
.setCancelable(false)
// positive button text and action
.setPositiveButton("Delete", DialogInterface.OnClickListener { dialog, id ->
//======================================================================
// DO something here to update the Parent dialog ????????
//======================================================================
})
// negative button text and action
.setNegativeButton("Cancel", DialogInterface.OnClickListener {
dialog, id -> dialog.cancel()
})
// create dialog box
val alert = dialogBuilder.create()
// set title for alert dialog box
alert.setTitle("Confirm")
// show alert dialog
alert.show()
}
}
return view
}
}