android 无法在Kotlin的lazycolumn中使用列表

rlcwz9us  于 2023-03-16  发布在  Android
关注(0)|答案(3)|浏览(184)

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

**一个

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

错误

Type mismatch.
Required:
Int
Found:
List<NearestResult>?

更新

2w2cym1i

2w2cym1i1#

您看到这个错误是因为您的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)
        }        
    }
}
mdfafbf1

mdfafbf12#

@Composable
fun ResultScreen(nearestResultList: List<NearestResult>?) {
    Column(
        Modifier
            .fillMaxSize()
            .background(getBackgroundColor())
    ) {
        LazyColumn {
            nearestResultList?.size?.let {
                items(it) { index ->
                    Text(text = nearestResultList[index].event, color = Color.White)
                }
            }
        }
    }
}
hfyxw5xn

hfyxw5xn3#

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

import androidx.compose.foundation.lazy.items

问题是接受列表的items函数被定义为Extension函数,因此我们需要导入它以使其可见。

相关问题