如何在 Android 应用程序中包含图像资源并从 Room 数据库引用它们

问题描述 投票:0回答:1

目前我定义了一个数据类,使用资源管理器将图像作为资源包含在内,并在可组合组件中使用,如下所示:

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 引用,但无法弄清楚如何正确处理它。

android image android-room assets
1个回答
0
投票

不要为此使用资源。资源 ID 在每次编译时分配,并且不稳定 - 编译应用程序时进行任何更改都可能导致 ID 的排列完全不同。相反,使用资产并从资产中打开它,使用数据库中资产的路径名而不是资源 ID。

您还可以使用带有名称的资源并按名称查找,但这并不真正推荐或有效。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.