Использование Lambdas с компаратором в Kotlin - PullRequest
0 голосов
/ 04 ноября 2019

Мой компилятор говорит мне: «Ожидается объявление члена» при создании лямбды для компаратора.

Collections.sort(activities, object: Comparator<ResolveInfo> { a, b ->
    var pm = activity!!.packageManager
    return String.CASE_INSENSITIVE_ORDER.compare(
        a.loadLabel(pm).toString(),
        b.loadLabel(pm).toString())
    })

Я не уверен, что пишу эту лямбду правильно, и был бы признателен за любую помощь. Спасибо!

1 Ответ

2 голосов
/ 04 ноября 2019

Вы объединяете анонимный класс с лямбдами, используйте:

Collections.sort(activities, object : Comparator<ResolveInfo> {
        override fun compare(a: ResolveInfo, b: ResolveInfo): Int {
            var pm = activity!!.packageManager
            return String.CASE_INSENSITIVE_ORDER.compare(
                a.loadLabel(pm).toString(),
                b.loadLabel(pm).toString()
            )
        }
    })

или

Collections.sort(activities, Comparator<ResolveInfo> { a, b ->
        val pm = applicationContext.packageManager
        String.CASE_INSENSITIVE_ORDER.compare(
            a.loadLabel(pm).toString(),
            b.loadLabel(pm).toString()
        )
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...