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

时间:2021-04-17 20:01:29

标签: android android-jetpack android-jetpack-compose

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

1 个答案:

答案 0 :(得分:1)

您可以使用 @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 接口并创建如下内容:

class SampleObjProvider: PreviewParameterProvider<Obj> {
    override val values = sequenceOf(
         Obj("Obj1",10),
         Obj("Obj2",70))
    override val count: Int = values.count()
}    

最后将 @PreviewParameter 应用于 ObjCard 可组合:

@Preview(showBackground = true)
@Composable
fun ObjCard(@PreviewParameter(SampleObjProvider::class)  obj:Obj) {
    //..same code 
}

enter image description here