无法将类型强制转换为(Int),因为<variable>是一个局部变量,可以通过更改闭包来捕获

时间:2019-05-13 16:13:41

标签: android kotlin

我知道之前曾有人问过这个问题,但似乎没有解决方法。我试图通过一个名为RecyclerView的int变量来跟踪topView中最可见的项,该变量是通过将视图的标签(“ Any”类型)转换为Int来填充的:< / p>

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 个答案:

答案 0 :(得分:3)

Kotlin编译器还巧妙地指出“哟,如果topViewnull怎么办?”。

如果答案是如果topViewnull时您什么都不做,则可以使用?.let()

topView?.let {
    val index = it + 6

    if (recyclerView.getChildAt(index) != null) {
        recyclerView.scrollToPosition(index)
        topView = (index)
    }
}