Skip to content

Commit 9f4623f

Browse files
authored
Merge pull request #60 from android/dt/improve-picker
Add headings to the recipe picker
2 parents 8d46924 + 64b1a0b commit 9f4623f

File tree

1 file changed

+45
-14
lines changed

1 file changed

+45
-14
lines changed

app/src/main/java/com/example/nav3recipes/RecipePickerActivity.kt

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,21 @@ import androidx.compose.foundation.clickable
99
import androidx.compose.foundation.layout.Arrangement
1010
import androidx.compose.foundation.layout.PaddingValues
1111
import androidx.compose.foundation.layout.fillMaxSize
12+
import androidx.compose.foundation.layout.height
1213
import androidx.compose.foundation.layout.padding
1314
import androidx.compose.foundation.lazy.LazyColumn
1415
import androidx.compose.foundation.lazy.items
1516
import androidx.compose.material3.ExperimentalMaterial3Api
1617
import androidx.compose.material3.ListItem
18+
import androidx.compose.material3.ListItemDefaults
1719
import androidx.compose.material3.MaterialTheme
1820
import androidx.compose.material3.Scaffold
1921
import androidx.compose.material3.Text
2022
import androidx.compose.material3.TopAppBar
2123
import androidx.compose.material3.TopAppBarDefaults
2224
import androidx.compose.runtime.Composable
2325
import androidx.compose.ui.Modifier
26+
import androidx.compose.ui.text.font.FontWeight
2427
import androidx.compose.ui.unit.dp
2528
import com.example.nav3recipes.animations.AnimatedActivity
2629
import com.example.nav3recipes.basic.BasicActivity
@@ -44,19 +47,30 @@ private class Recipe(
4447
val activityClass: Class<out Activity>
4548
)
4649

50+
private class Heading(val name: String)
51+
4752
private val recipes = listOf(
53+
Heading("Basic API recipes"),
4854
Recipe("Basic", BasicActivity::class.java),
4955
Recipe("Basic DSL", BasicDslActivity::class.java),
5056
Recipe("Basic Saveable", BasicSaveableActivity::class.java),
57+
58+
Heading("Layouts and animations"),
59+
Recipe("Material list-detail layout", MaterialListDetailActivity::class.java),
60+
Recipe("Dialog", DialogActivity::class.java),
61+
Recipe("Two pane layout (custom scene)", TwoPaneActivity::class.java),
5162
Recipe("Animations", AnimatedActivity::class.java),
52-
Recipe("Conditional navigation", ConditionalActivity::class.java),
63+
64+
Heading("Common use cases"),
5365
Recipe("Common UI", CommonUiActivity::class.java),
54-
Recipe("Dialog", DialogActivity::class.java),
55-
Recipe("Material list-detail layout", MaterialListDetailActivity::class.java),
56-
Recipe("Two pane layout", TwoPaneActivity::class.java),
66+
Recipe("Conditional navigation", ConditionalActivity::class.java),
67+
68+
Heading("Architecture"),
69+
Recipe("Modular Navigation", ModularActivity::class.java),
70+
71+
Heading("Passing navigation arguments"),
5772
Recipe("Argument passing to basic ViewModel", BasicViewModelsActivity::class.java),
5873
Recipe("Argument passing to injected ViewModel", InjectedViewModelsActivity::class.java),
59-
Recipe("Modular Navigation", ModularActivity::class.java),
6074
)
6175

6276
class RecipePickerActivity : ComponentActivity() {
@@ -76,28 +90,45 @@ class RecipePickerActivity : ComponentActivity() {
7690
)
7791
)
7892
}) { innerPadding ->
79-
RecipeListView(padding = innerPadding)
93+
RecipeList(padding = innerPadding)
8094
}
8195
}
8296
}
8397

8498

8599
@Composable
86-
fun RecipeListView(padding: PaddingValues) {
100+
fun RecipeList(padding: PaddingValues) {
87101
LazyColumn(
88102
modifier = Modifier
89103
.fillMaxSize()
90104
.padding(padding),
91-
contentPadding = PaddingValues(horizontal = 16.dp, vertical = 8.dp),
92105
verticalArrangement = Arrangement.spacedBy(8.dp)
93106
) {
94-
items(recipes) { recipe ->
95-
ListItem(
96-
headlineContent = { Text(recipe.name) },
97-
modifier = Modifier.clickable {
98-
recipe.start()
107+
items(recipes) { item ->
108+
when(item){
109+
is Recipe -> {
110+
ListItem(
111+
headlineContent = { Text(item.name) },
112+
modifier = Modifier.clickable {
113+
item.start()
114+
}
115+
)
116+
}
117+
is Heading -> {
118+
ListItem(
119+
headlineContent = {
120+
Text(
121+
text = item.name,
122+
fontWeight = FontWeight.Bold
123+
)
124+
},
125+
modifier = Modifier.height(48.dp),
126+
colors = ListItemDefaults.colors(
127+
containerColor = MaterialTheme.colorScheme.surfaceVariant
128+
)
129+
)
99130
}
100-
)
131+
}
101132
}
102133
}
103134
}

0 commit comments

Comments
 (0)