无法在 kotlin 的惰性列中使用列表

Viv*_*odi 13 android kotlin android-jetpack android-jetpack-compose lazycolumn

我在项目中使用 LazyColumn。当我传递列表时,它给了我错误。有人可以指导我什么错误吗?

结果屏幕.kt

@Composable
fun ResultScreen(nearestResultList: List<NearestResult>?) {
    LazyColumn(
        Modifier
            .fillMaxSize()
            .background(getBackgroundColor())
    ) {
        items(nearestResultList) { nearestResult ->
            Text(text = "$nearestResult")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

错误

Type mismatch.
Required:
Int
Found:
List<NearestResult>?
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

更新

在此输入图像描述

Sar*_*tal 26

正确的解决方案是使用此导入:

import androidx.compose.foundation.lazy.items
Run Code Online (Sandbox Code Playgroud)

问题在于接受列表的 items 函数被定义为扩展函数,因此我们需要导入它以使其可见以供使用。


Ma3*_*a3x 8

您看到该错误是因为您的nearestResultList可为空,并且在该函数的各种签名/重载中items(...),该签名items(size: Int, ...)被选为“最接近的匹配”。

为了能够使用任何签名,您唯一需要做的items(...)就是空检查

import androidx.compose.foundation.lazy.items // or auto-fix imports

if (nearestResultList != null) {
    LazyColumn {
        items(nearestResultList) {
            Text(text = it.event, color = Color.White)
        }        
    }
}
Run Code Online (Sandbox Code Playgroud)