@@ -18,22 +18,20 @@ package com.google.samples.apps.nowinandroid.feature.interests
1818
1919import androidx.compose.foundation.background
2020import androidx.compose.foundation.clickable
21- import androidx.compose.foundation.layout.Column
22- import androidx.compose.foundation.layout.Row
23- import androidx.compose.foundation.layout.Spacer
2421import androidx.compose.foundation.layout.padding
2522import androidx.compose.foundation.layout.size
26- import androidx.compose.foundation.layout.width
2723import androidx.compose.material3.Icon
24+ import androidx.compose.material3.ListItem
25+ import androidx.compose.material3.ListItemDefaults
2826import androidx.compose.material3.MaterialTheme
2927import androidx.compose.material3.Surface
3028import androidx.compose.material3.Text
3129import androidx.compose.runtime.Composable
32- import androidx.compose.ui.Alignment
3330import androidx.compose.ui.Modifier
31+ import androidx.compose.ui.graphics.Color
3432import androidx.compose.ui.res.stringResource
33+ import androidx.compose.ui.semantics.semantics
3534import androidx.compose.ui.tooling.preview.Preview
36- import androidx.compose.ui.unit.Dp
3735import androidx.compose.ui.unit.dp
3836import com.google.samples.apps.nowinandroid.core.designsystem.component.DynamicAsyncImage
3937import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaIconToggleButton
@@ -51,63 +49,46 @@ fun InterestsItem(
5149 modifier : Modifier = Modifier ,
5250 iconModifier : Modifier = Modifier ,
5351 description : String = "",
54- itemSeparation : Dp = 16.dp,
5552) {
56- Row (
57- verticalAlignment = Alignment .CenterVertically ,
58- modifier = modifier,
59- ) {
60- Row (
61- verticalAlignment = Alignment .CenterVertically ,
62- modifier = Modifier
63- .weight(1f )
64- .clickable { onClick() }
65- .padding(vertical = itemSeparation),
66- ) {
53+ ListItem (
54+ leadingContent = {
6755 InterestsIcon (topicImageUrl, iconModifier.size(64 .dp))
68- Spacer (modifier = Modifier .width(24 .dp))
69- InterestContent (name, description)
70- }
71- NiaIconToggleButton (
72- checked = following,
73- onCheckedChange = onFollowButtonClick,
74- icon = {
75- Icon (
76- imageVector = NiaIcons .Add ,
77- contentDescription = stringResource(
78- id = string.card_follow_button_content_desc,
79- ),
80- )
81- },
82- checkedIcon = {
83- Icon (
84- imageVector = NiaIcons .Check ,
85- contentDescription = stringResource(
86- id = string.card_unfollow_button_content_desc,
87- ),
88- )
89- },
90- )
91- }
92- }
93-
94- @Composable
95- private fun InterestContent (name : String , description : String , modifier : Modifier = Modifier ) {
96- Column (modifier) {
97- Text (
98- text = name,
99- style = MaterialTheme .typography.headlineSmall,
100- modifier = Modifier .padding(
101- vertical = if (description.isEmpty()) 0 .dp else 4 .dp,
102- ),
103- )
104- if (description.isNotEmpty()) {
105- Text (
106- text = description,
107- style = MaterialTheme .typography.bodyMedium,
56+ },
57+ headlineContent = {
58+ Text (text = name)
59+ },
60+ supportingContent = {
61+ Text (text = description)
62+ },
63+ trailingContent = {
64+ NiaIconToggleButton (
65+ checked = following,
66+ onCheckedChange = onFollowButtonClick,
67+ icon = {
68+ Icon (
69+ imageVector = NiaIcons .Add ,
70+ contentDescription = stringResource(
71+ id = string.card_follow_button_content_desc,
72+ ),
73+ )
74+ },
75+ checkedIcon = {
76+ Icon (
77+ imageVector = NiaIcons .Check ,
78+ contentDescription = stringResource(
79+ id = string.card_unfollow_button_content_desc,
80+ ),
81+ )
82+ },
10883 )
109- }
110- }
84+ },
85+ colors = ListItemDefaults .colors(
86+ containerColor = Color .Transparent ,
87+ ),
88+ modifier = modifier
89+ .semantics(mergeDescendants = true ) { /* no-op */ }
90+ .clickable(enabled = true , onClick = onClick),
91+ )
11192}
11293
11394@Composable
0 commit comments