Интеллектуальное приведение к (Int) невозможно, поскольку <variable>является локальной переменной, которая захватывается изменяющимся замыканием - PullRequest
1 голос
/ 13 мая 2019

Я знаю, что этот вопрос задавался ранее, но, похоже, решения не было.Я пытаюсь отследить верхний видимый элемент в RecyclerView с помощью переменной int с именем topView, которая заполняется путем преобразования тега представления (типа 'Any') в Int:

var topView = citationRecyclerView!!.getChildAt(0)?.tag as Int?

Я хочу, чтобы эта переменная обновлялась, когда и если представление прокручивается через onClick представления:

if (recyclerView.getChildAt((topView + 6)) != null) {
            recyclerView.scrollToPosition(topView + 6)
            topView = (topView + 6)

        }

Каждый экземпляр topView во втором блоке кода даетмне титульная ошибка.Я понимаю, что это предотвращает изменение значения из другого потока, но я только намерен сделать его доступным здесь.Как мне сравнить и увеличить этот Int?

1 Ответ

3 голосов
/ 13 мая 2019

Компилятор Kotlin также тонко указывает: «Эй, что нам делать, если topView равно null?».

Если ответ таков, что вы ничего не хотите делать, если topViewnull, вы можете использовать ?.let():

topView?.let {
    val index = it + 6

    if (recyclerView.getChildAt(index) != null) {
        recyclerView.scrollToPosition(index)
        topView = (index)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...