与我们一起参加10月8日至10日在纽约市的会议,了解关于GraphQL联邦和API平台工程的最新技巧、趋势和新闻。加入我们,共同参加2024年纽约市GraphQL峰会
文档
免费开始

5. 将查询连接到您的 UI


在本章中,您将展示一组在一个LazyColumn.

设置 LaunchList 组合tens

LaunchList中,声明一个空的 LaunchListQuery.Launch 列表,并初始化:

app/src/main/java/com/example/rocketreserver/LaunchList.kt
@Composable
fun LaunchList(onLaunchClick: (launchId: String) -> Unit) {
var launchList by remember { mutableStateOf(emptyList<LaunchListQuery.Launch>()) }

LaunchListQuery.Launch 是从您的 列表生成的类型安全的模型。

为项目制作UI

更新 LaunchItem 可组合,向其传递一个 LaunchListQuery.Launch 并显示id:

app/src/main/java/com/example/rocketreserver/LaunchList.kt
@Composable
private fun LaunchItem(launch: LaunchListQuery.Launch, onClick: (launchId: String) -> Unit) {
ListItem(
modifier = Modifier.clickable { onClick(launch.id) },
headlineText = {
// Mission name
Text(text = "Launch ${launch.id}")
},

使用列表内的数据

将响应数据中的数据填充到 launchList 中,并在LazyColumn中使用它:

app/src/main/java/com/example/rocketreserver/LaunchList.kt
@Composable
fun 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连接上了 🚀

A basic list

不过,看起来有点单调。接下来,您将 向列表添加更多信息 以使它看起来更漂亮!

上一页
4. 执行您的第一个查询
下一页
6. 向列表添加更多信息
评分文章评分在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,商业名称:Apollo GraphQL。

隐私政策

公司