@file:Suppress("unused") package dev.inmo.micro_utils.android.recyclerview.alerts import android.app.AlertDialog import android.content.Context import android.content.DialogInterface import android.view.ViewGroup import android.widget.TextView import dev.inmo.micro_utils.android.alerts.AlertDialogCallback import dev.inmo.micro_utils.android.recyclerview.* data class AlertAction( val title: String, val callback: (DialogInterface) -> Unit ) private class ActionViewHolder( container: ViewGroup, dialogInterfaceGetter: () -> DialogInterface ) : AbstractStandardViewHolder(container, android.R.layout.simple_list_item_1) { private lateinit var action: AlertAction private val textView: TextView get() = itemView.findViewById(android.R.id.text1) init { itemView.setOnClickListener { action.callback(dialogInterfaceGetter()) } } override fun onBind(item: AlertAction) { action = item textView.text = item.title } } private class ActionsRecyclerViewAdapter( data: List, private val dialogInterfaceGetter: () -> DialogInterface ) : RecyclerViewAdapter(data) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AbstractViewHolder = ActionViewHolder( parent, dialogInterfaceGetter ) } fun Context.createActionsAlertDialog( actions: List, title: Int? = null, positivePair: Pair? = null, neutralPair: Pair? = null, negativePair: Pair? = null, show: Boolean = true ): AlertDialog { lateinit var dialogInterface: DialogInterface return createRecyclerViewDialog( title, positivePair, neutralPair, negativePair, show ) { ActionsRecyclerViewAdapter( actions ) { dialogInterface } }.also { dialogInterface = it } }