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

Nia*_*med 6 android android-jetpack android-jetpack-compose

在 XML 中,我们通过使用@tools:sample/first_names等属性来使用样本名称、日期等。我们有什么方法可以在 Preview Composable 中以类似的方式使用@tools:sample中的示例数据吗?

Gab*_*tti 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)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您可以实现该PreviewParameterProvider接口并创建类似以下内容的内容:

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

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

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)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述