@@ -9,18 +9,21 @@ import androidx.compose.foundation.clickable
9
9
import androidx.compose.foundation.layout.Arrangement
10
10
import androidx.compose.foundation.layout.PaddingValues
11
11
import androidx.compose.foundation.layout.fillMaxSize
12
+ import androidx.compose.foundation.layout.height
12
13
import androidx.compose.foundation.layout.padding
13
14
import androidx.compose.foundation.lazy.LazyColumn
14
15
import androidx.compose.foundation.lazy.items
15
16
import androidx.compose.material3.ExperimentalMaterial3Api
16
17
import androidx.compose.material3.ListItem
18
+ import androidx.compose.material3.ListItemDefaults
17
19
import androidx.compose.material3.MaterialTheme
18
20
import androidx.compose.material3.Scaffold
19
21
import androidx.compose.material3.Text
20
22
import androidx.compose.material3.TopAppBar
21
23
import androidx.compose.material3.TopAppBarDefaults
22
24
import androidx.compose.runtime.Composable
23
25
import androidx.compose.ui.Modifier
26
+ import androidx.compose.ui.text.font.FontWeight
24
27
import androidx.compose.ui.unit.dp
25
28
import com.example.nav3recipes.animations.AnimatedActivity
26
29
import com.example.nav3recipes.basic.BasicActivity
@@ -44,19 +47,30 @@ private class Recipe(
44
47
val activityClass : Class <out Activity >
45
48
)
46
49
50
+ private class Heading (val name : String )
51
+
47
52
private val recipes = listOf (
53
+ Heading (" Basic API recipes" ),
48
54
Recipe (" Basic" , BasicActivity ::class .java),
49
55
Recipe (" Basic DSL" , BasicDslActivity ::class .java),
50
56
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),
51
62
Recipe (" Animations" , AnimatedActivity ::class .java),
52
- Recipe (" Conditional navigation" , ConditionalActivity ::class .java),
63
+
64
+ Heading (" Common use cases" ),
53
65
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" ),
57
72
Recipe (" Argument passing to basic ViewModel" , BasicViewModelsActivity ::class .java),
58
73
Recipe (" Argument passing to injected ViewModel" , InjectedViewModelsActivity ::class .java),
59
- Recipe (" Modular Navigation" , ModularActivity ::class .java),
60
74
)
61
75
62
76
class RecipePickerActivity : ComponentActivity () {
@@ -76,28 +90,45 @@ class RecipePickerActivity : ComponentActivity() {
76
90
)
77
91
)
78
92
}) { innerPadding ->
79
- RecipeListView (padding = innerPadding)
93
+ RecipeList (padding = innerPadding)
80
94
}
81
95
}
82
96
}
83
97
84
98
85
99
@Composable
86
- fun RecipeListView (padding : PaddingValues ) {
100
+ fun RecipeList (padding : PaddingValues ) {
87
101
LazyColumn (
88
102
modifier = Modifier
89
103
.fillMaxSize()
90
104
.padding(padding),
91
- contentPadding = PaddingValues (horizontal = 16 .dp, vertical = 8 .dp),
92
105
verticalArrangement = Arrangement .spacedBy(8 .dp)
93
106
) {
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 // Make text bold
123
+ )
124
+ },
125
+ modifier = Modifier .height(48 .dp), // Set a smaller height
126
+ colors = ListItemDefaults .colors( // Set background color
127
+ containerColor = MaterialTheme .colorScheme.surfaceVariant
128
+ )
129
+ )
99
130
}
100
- )
131
+ }
101
132
}
102
133
}
103
134
}
0 commit comments