目前我定义了一个数据类,使用资源管理器将图像作为资源包含在内,并在可组合组件中使用,如下所示:
data class Picture(
val name: String,
val imageId: Int = -1,
)
val picture = Picture(name = "Cake", imageId = R.drawable.cake)
@Composable
fun PictureItem(picture: Picture) {
Card {
Box(
modifier = modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = modifier.padding(16.dp),
) {
Image(
painterResource(id = picture.imageId),
contentDescription = picture.name
)
Spacer(modifier = Modifier.height(8.dp))
Text(text = product.name)
}
}
}
}
我正在尝试学习如何将数据移动到 Room 中,并且想知道这样做时如何处理图像。我想象用指向图像文件的东西替换 id 引用,但无法弄清楚如何正确处理它。
不要为此使用资源。资源 ID 在每次编译时分配,并且不稳定 - 编译应用程序时进行任何更改都可能导致 ID 的排列完全不同。相反,使用资产并从资产中打开它,使用数据库中资产的路径名而不是资源 ID。
您还可以使用带有名称的资源并按名称查找,但这并不真正推荐或有效。