加入我们于10月8-10日在纽约市,了解有关 GraphQL 联邦和 API 平台工程的最新的技巧、趋势和新闻。加入我们于 2024 年纽约市的 GraphQL 峰会
文档
免费开始
您正在查看该软件的先前版本的文档。 切换到最新稳定版本。

5. 将查询连接到UI


在本章中,您将要显示一系列 站点在一个 LazyColumn.

配置LaunchListAdapter

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是从您的LaunchList生成的类型安全生成模型。

为项目创建UI

更新LaunchItem composable,将其传递一个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对象列表。

测试您的查询

点击运行按钮。现在您的UI已与GraphQL查询相连 🚀

A basic list

外观有点单调。接下来,您将为列表添加更多信息,使其看起来更美观!

上一页
4. 执行您的第一个查询
下一页
6. 为列表添加更多信息
评分文章评分Edit on GitHubEditForumsDiscord

©2024Apollo Graph Inc.,作为Apollo GraphQL经营。

隐私政策

公司