android - 如何在 Composable 中使用示例数据?

标签 android android-jetpack android-jetpack-compose

在 XML 中,我们通过使用 等属性来使用样本名称、日期等。 @tools:sample/first_names .
有什么方法可以使用类似于 的样本数据吗? @tools:样本在预览可组合?

最佳答案

您可以使用 @PreviewParameter .
例如:

data class Obj(val name :String,val count:Int)

@Composable
fun ObjCard(obj:Obj) {
    Card(
        Modifier.width(100.dp).height(50.dp)){
        Column(
            verticalArrangement = Arrangement.Center,
            horizontalAlignment = Alignment.CenterHorizontally)
        {
            Text("Name = " +obj.name)
            Text("Count = " +obj.count)
        }
    }
}
在这种情况下,您可以实现 PreviewParameterProvider接口(interface)并创建类似的东西:
class SampleObjProvider: PreviewParameterProvider<Obj> {
    override val values = sequenceOf(
         Obj("Obj1",10),
         Obj("Obj2",70))
    override val count: Int = values.count()
}    
最后申请@PreviewParameterObjCard可组合:
@Preview(showBackground = true)
@Composable
fun ObjCard(@PreviewParameter(SampleObjProvider::class)  obj:Obj) {
    //..same code 
}
enter image description here

关于android - 如何在 Composable 中使用示例数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67142449/

相关文章:

android - 在bottomSheetScaffold中设置背景透明

安卓 : Click event is not triggered at time of animation

android - 导航 DESTINATION_NAME 对此 NavController 未知,是否正在重新打开之前使用 navController.popBackStack() 关闭的 fragment ?

android - 使用工作表上边距撰写 BottomSheetScaffold

android - SQL 查询按排序对 group_by 项目 - android

android - 我们如何通过专有 Wifi 网络安装/推送 Android 应用程序?

android - 在Android MVVM中,需要多少个存储库和网络客户端来提供不同的查询?

android - 使用新的 App Startup API 初始化实例

android - 通过撰写导航传递 Parcelable 参数

android - 撰写 : Create Text with Circle Background