Kotlin - Как создать функцию-член класса, аналогичную TextView.setText (String), которая может быть вызвана как TextView.text = "" - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь создать пользовательский AlertDialogBox, для которого я хотел бы вызвать метод setTitle () как alertObject.title = "SomeTitle".Мой текущий код AlertDialog имеет следующий вид:

class AlertBox(context: Context) : BaseDialogHelper() {

override val dialogView: View by lazy {
    LayoutInflater.from(context).inflate(R.layout.custom_dialog, null)
}

override val builder: AlertDialog.Builder = AlertDialog.Builder(context).setView(dialogView)

val txt_title: TextView by lazy {
    dialogView.findViewById<TextView>(R.id.txt_title)
}

val txt_message: TextView by lazy {
    dialogView.findViewById<TextView>(R.id.txt_message)
}

val btn_ok: Button by lazy {
    dialogView.findViewById<Button>(R.id.btn_done)
}

val btn_cancel: Button by lazy {
    dialogView.findViewById<Button>(R.id.btn_cancel)
}

//These are the methods that i want to change
fun setTitle(title: String) {
    txt_title.text = title
}

fun setMessage(message: String) {
    txt_message.text = message
}


fun onOkButtonClickListener(func: (() -> Unit)? = null) = with(btn_ok) {
    setClickListenerToButton(func)
}

fun onCancelButtonClickListener(func: (() -> Unit)? = null) = with(btn_cancel) {
    setClickListenerToButton(func)
}


private fun View.setClickListenerToButton(func: (() -> Unit)?) = setOnClickListener {
    func?.invoke()
    dialog?.dismiss()
}


}

Я хотел бы создать функцию-член класса, аналогичную TextView.setText (String), которая может быть вызвана как TextView.text = "".Это можно сделать для пользовательских классов ...?

1 Ответ

0 голосов
/ 20 ноября 2018

Вам необходимо определить свойство:

var text: String
    get() = txt_title.text
    set(value) { txt_title.text = value }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...