Как ничего не вернуть из лямбды в Kotlin на Android? (Несоответствие типов)

Итак, я получил эту функцию в Котлине:

 private fun initComponents(){
        lv = findViewById(R.id.listView)

        lv?.setOnItemLongClickListener { _, _, i, _ ->
            removeItem(i) <- Error Here
        }
    }

fun removeItem(index : Int){
        items.removeAt(index) 
    }

где элементы - это ArrayList.

И мне выдает ошибку в лямбде -

Type mismatch. Required: Boolean Found: Unit

Я новичок в Котлине. Спасибо за любую помощь

1
0
19
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно вернуть значение Boolean, чтобы указать, использовали ли вы событие или нет:

        lv?.setOnItemLongClickListener { _, _, i, _ ->
            removeItem(i)
            true
        }

круто, это работает, но почему -setOnItemClickListener этого не требует?

Nadav Holtzman 27.03.2022 00:13

@NadavHoltzman: setOnClickListener() принимает OnClickListener. Его метод onClick() возвращает void, который сопоставляется с Unit в Котлине. setOnLongClickListener() берет OnLongClickListener. Его метод onLongClick() возвращает boolean.

CommonsWare 27.03.2022 00:19

Другие вопросы по теме