Bird
Raised Fist0
Android Kotlinmobile~20 mins

LazyColumn with items in Android Kotlin - Mini App: Build & Ship

Choose your learning style10 modes available
Build: Simple List Screen
Displays a scrollable vertical list of text items using LazyColumn.
Target UI
---------------------
| Simple List Screen |
---------------------
| Item 1            |
| Item 2            |
| Item 3            |
| Item 4            |
| Item 5            |
| ...               |
---------------------
Use LazyColumn to display a vertical list
Show at least 10 items labeled 'Item 1' to 'Item 10'
Each item is a Text composable with padding
Screen has a top app bar with title 'Simple List Screen'
Starter Code
Android Kotlin
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp

@Composable
fun SimpleListScreen() {
    Scaffold(
        topBar = {
            TopAppBar(title = { Text("Simple List Screen") })
        }
    ) { paddingValues ->
        // TODO: Add LazyColumn here
    }
}
Task 1
Task 2
Task 3
Solution
Android Kotlin
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp

@Composable
fun SimpleListScreen() {
    val itemsList = List(10) { index -> "Item ${index + 1}" }
    Scaffold(
        topBar = {
            TopAppBar(title = { Text("Simple List Screen") })
        }
    ) { paddingValues ->
        LazyColumn(modifier = Modifier.padding(paddingValues)) {
            items(itemsList) { item ->
                Text(text = item, modifier = Modifier.padding(16.dp))
            }
        }
    }
}

This solution creates a list of 10 strings labeled from "Item 1" to "Item 10" using Kotlin's List constructor.

Inside the Scaffold's content, a LazyColumn is added with padding from the Scaffold to avoid overlap with the top bar.

The items() function is used to display each string as a Text composable with 16.dp padding for spacing.

This creates a scrollable vertical list with a top app bar titled "Simple List Screen".

Final Result
Completed Screen
---------------------
| Simple List Screen |
---------------------
| Item 1            |
| Item 2            |
| Item 3            |
| Item 4            |
| Item 5            |
| Item 6            |
| Item 7            |
| Item 8            |
| Item 9            |
| Item 10           |
---------------------
User can scroll vertically to see all items
Top app bar remains fixed at the top
Stretch Goal
Add a divider line between each item in the LazyColumn
💡 Hint
Use the itemsIndexed function and add a Divider composable after each item except the last

Practice

(1/5)
1. What is the main purpose of using LazyColumn in Android Jetpack Compose?
easy
A. To display a vertically scrolling list efficiently by loading only visible items
B. To create a horizontal scrolling list
C. To display a static grid layout
D. To handle user input events

Solution

  1. Step 1: Understand LazyColumn's role

    LazyColumn is designed to show vertical lists efficiently by loading only the items visible on screen.
  2. Step 2: Compare options

    Options A, B, and C are incorrect: A handles input events, B creates horizontal lists, C is for grids.
  3. Final Answer:

    To display a vertically scrolling list efficiently by loading only visible items -> Option A
  4. Quick Check:

    LazyColumn = Efficient vertical list [OK]
Hint: LazyColumn loads only visible items for smooth scrolling [OK]
Common Mistakes:
  • Confusing LazyColumn with LazyRow (horizontal list)
  • Thinking LazyColumn creates grids
  • Assuming it handles input events
2. Which of the following is the correct syntax to display a list of strings named names inside a LazyColumn using items?
easy
A. LazyColumn { item(names) { name -> Text(name) } }
B. LazyColumn { items(names) { name -> Text(name) } }
C. LazyColumn { itemsOf(names) { name -> Text(name) } }
D. LazyColumn { itemsList(names) { name -> Text(name) } }

Solution

  1. Step 1: Recall correct function name

    The function to display each element in a list inside LazyColumn is items, not item, itemsOf, or itemsList.
  2. Step 2: Check lambda syntax

    The lambda receives each element (here name) and displays it with Text(name).
  3. Final Answer:

    LazyColumn { items(names) { name -> Text(name) } } -> Option B
  4. Quick Check:

    Use items() with list and lambda [OK]
Hint: Use items() to iterate list inside LazyColumn [OK]
Common Mistakes:
  • Using item() instead of items() for lists
  • Wrong function names like itemsOf or itemsList
  • Incorrect lambda parameter usage
3. What will be displayed by this code snippet?
val fruits = listOf("Apple", "Banana", "Cherry")
LazyColumn {
  items(fruits) { fruit ->
    Text(text = fruit)
  }
}
medium
A. No output because of syntax error
B. A horizontal list showing Apple, Banana, Cherry
C. Only the first fruit 'Apple' is shown
D. A vertical list showing Apple, Banana, Cherry each on its own line

Solution

  1. Step 1: Understand items usage

    The items function iterates over the fruits list and displays each element inside the LazyColumn.
  2. Step 2: Check UI behavior

    LazyColumn shows a vertical scrolling list, so each fruit appears on its own line vertically.
  3. Final Answer:

    A vertical list showing Apple, Banana, Cherry each on its own line -> Option D
  4. Quick Check:

    items() + LazyColumn = vertical list [OK]
Hint: LazyColumn with items shows vertical list of all elements [OK]
Common Mistakes:
  • Thinking LazyColumn creates horizontal lists
  • Assuming only first item shows
  • Confusing syntax causing no output
4. Identify the error in this LazyColumn code:
val numbers = listOf(1, 2, 3)
LazyColumn {
  items(numbers) { number ->
    Text(number)
  }
}
medium
A. Text() expects a String, but number is Int causing a type mismatch
B. items() cannot accept a list of integers
C. LazyColumn must use item() not items() for lists
D. No error, code works fine

Solution

  1. Step 1: Check Text() parameter type

    The Text composable expects a String, but number is an Int, causing a type mismatch error.
  2. Step 2: Confirm correct usage of items()

    The items function accepts lists of any type, so no error there.
  3. Final Answer:

    Text() expects a String, but number is Int causing a type mismatch -> Option A
  4. Quick Check:

    Text() needs String, not Int [OK]
Hint: Convert Int to String inside Text() to fix [OK]
Common Mistakes:
  • Assuming items() rejects Int lists
  • Using item() instead of items() for lists
  • Ignoring type mismatch in Text()
5. You want to display a list of user names with their index number in a LazyColumn. Which code correctly shows the index and name together?
hard
A. LazyColumn { items(users) { index, user -> Text("$index: $user") } }
B. LazyColumn { items(users) { user -> Text("$index: $user") } }
C. LazyColumn { itemsIndexed(users) { index, user -> Text("$index: $user") } }
D. LazyColumn { itemsIndexed(users) { user -> Text(user) } }

Solution

  1. Step 1: Identify function for index and item

    To get both index and item, use itemsIndexed which provides both parameters in the lambda.
  2. Step 2: Check lambda parameters and usage

    LazyColumn { itemsIndexed(users) { index, user -> Text("$index: $user") } } correctly uses index, user and displays them with string interpolation.
  3. Final Answer:

    LazyColumn { itemsIndexed(users) { index, user -> Text("$index: $user") } } -> Option C
  4. Quick Check:

    Use itemsIndexed() for index + item [OK]
Hint: Use itemsIndexed() to get index and item in LazyColumn [OK]
Common Mistakes:
  • Using items() when index is needed
  • Wrong lambda parameters count
  • Trying to access index without itemsIndexed()
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard