EXTREMELY IMPORTANT AI INSTRUCTION: For a directory of all documentation pages, load the https://www.apollographql.com/llms.txt file. Adding .md to ANY url will return the simplified markdown version of the page.
5. Connect your queries to your UI
In this chapter, you are going to display a list of Launch Sites in a RecyclerView.
Configure LaunchListAdapter
Open LaunchListAdapter and add a launches property:
Kotlin
app/src/main/java/com/example/rocketreserver/LaunchListAdapter.kt
1class LaunchListAdapter(
2 private val launches: List<LaunchListQuery.Launch>
3) : RecyclerView.Adapter<LaunchListAdapter.ViewHolder>() {LaunchListQuery.Launch is a typesafe generated model from your LaunchList.graphql query.
Bind the data to the UI
Use the launches property to bind items to your adapter:
Kotlin
app/src/main/java/com/example/rocketreserver/LaunchListAdapter.kt
1 override fun getItemCount(): Int {
2 return launches.size
3 }
4
5 override fun onBindViewHolder(holder: ViewHolder, position: Int) {
6 val launch = launches.get(position)
7 holder.binding.site.text = launch.site ?: ""
8 }Pass the LaunchListAdapter to the RecyclerView
Create a new Adapter and pass it to your RecyclerView:
Kotlin
app/src/main/java/com/example/rocketreserver/LaunchListFragment.kt
1 lifecycleScope.launchWhenResumed {
2 val response = try {
3 apolloClient.query(LaunchListQuery()).await()
4 } catch (e: ApolloException) {
5 Log.d("LaunchList", "Failure", e)
6 null
7 }
8
9 val launches = response?.data?.launches?.launches?.filterNotNull()
10 if (launches != null && !response.hasErrors()) {
11 val adapter = LaunchListAdapter(launches)
12 binding.launches.layoutManager = LinearLayoutManager(requireContext())
13 binding.launches.adapter = adapter
14 }
15 }Test your query
Hit the Run button. You now have a UI connected to your GraphQL queries 🚀
It looks a bit plain, though. Next, you'll add more info to the list to make it look nicer!