当前位置: 首页 > 知识库问答 >
问题:

智能强制转换为(Int)是不可能的,因为是一个局部变量,它被不断变化的闭包捕获

秦信瑞
2023-03-14

我知道这个问题以前有人问过,但似乎没有解决方案。我正在尝试使用名为topView的int变量来跟踪回收器视图中的顶部可见项目,该变量通过将视图的标记(类型“Any”)转换为Int来填充:

var topView=citationRecyclerView!!。getChildAt(0)?。标记为Int

我希望当视图通过视图的 onClick 滚动时以及如果视图滚动时更新该变量:

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

        }

第二个代码块中的每个topView实例都给了我名义上的错误。我知道这是为了防止值被另一个线程更改,但是我只打算在这里访问它。我如何比较并递增这个Int?


共有1个答案

秦承允
2023-03-14

Kotlin 编译器还巧妙地指出“哟,如果 topView,我们该怎么办?

如果答案是如果topViewnull,则不想执行任何操作,则可以使用?。let()

topView?.let {
    val index = it + 6

    if (recyclerView.getChildAt(index) != null) {
        recyclerView.scrollToPosition(index)
        topView = (index)
    }
}
 类似资料: