5. 将查询连接到您的 UI
在本章中,您将展示一组发射 在一个LazyColumn.
设置 LaunchList 组合tens
在LaunchList
中,声明一个空的 LaunchListQuery.Launch
列表,并初始化:
app/src/main/java/com/example/rocketreserver/LaunchList.kt
@Composablefun LaunchList(onLaunchClick: (launchId: String) -> Unit) {var launchList by remember { mutableStateOf(emptyList<LaunchListQuery.Launch>()) }
LaunchListQuery.Launch
是从您的 Launch 列表生成的类型安全的模型。GraphQL 查询。
为项目制作UI
更新 LaunchItem
可组合,向其传递一个 LaunchListQuery.Launch
并显示id:
app/src/main/java/com/example/rocketreserver/LaunchList.kt
@Composableprivate fun LaunchItem(launch: LaunchListQuery.Launch, onClick: (launchId: String) -> Unit) {ListItem(modifier = Modifier.clickable { onClick(launch.id) },headlineText = {// Mission nameText(text = "Launch ${launch.id}")},
使用列表内的数据
将响应数据中的数据填充到 launchList
中,并在LazyColumn中使用它:
app/src/main/java/com/example/rocketreserver/LaunchList.kt
@Composablefun LaunchList(onLaunchClick: (launchId: String) -> Unit) {var launchList by remember { mutableStateOf(emptyList<LaunchListQuery.Launch>()) }LaunchedEffect(Unit) {val response = apolloClient.query(LaunchListQuery()).execute()launchList = response.data?.launches?.launches?.filterNotNull() ?: emptyList()}LazyColumn {items(launchList) { launch ->LaunchItem(launch = launch, onClick = onLaunchClick)}}}
注意: 因为模式定义了 launches
为一个包含 可空 Launch
对象的列表。
测试您的查询
点击 运行 按钮。您现在已将连接到您的GraphQL查询的UI连接上了 🚀
不过,看起来有点单调。接下来,您将 向列表添加更多信息 以使它看起来更漂亮!