Как правильно увеличить переменную в LazyColumn

Я хочу создать простое 30-дневное приложение с жестко закодированными данными, но у меня есть переменная, обозначающая текущий день, я хочу увеличить ее, но когда я это делаю, она делает это не совсем правильно.

@Composable
fun _30DaysApp() {
    var curDay by remember { mutableStateOf(1) }
    Scaffold(topBar = {
    }) { it ->
        LazyColumn(contentPadding = it) {
            items(tasks) {
                CardTask(task = it, day = curDay)
                curDay++

            }
        }
    }
}

@Composable
fun CardTask(task: Task, day: Int, modifier: Modifier = Modifier) {
    var expand by remember { mutableStateOf(false) }
    Card(shape = RoundedCornerShape(16.dp)) {
        Column(
            modifier = modifier
                .padding(12.dp)
        ) {
            Row {
                Text(text = stringResource(R.string.day, day))
                Spacer(modifier = modifier.weight(1f))
                ExpandButton(expanded = expand, onClick = { expand = !expand })
            }
            Text(text = stringResource(task.articleRes))
            Spacer(modifier = Modifier.size(8.dp))
            Image(
                painter = painterResource(task.imageRes), contentDescription = null,
                contentScale = ContentScale.Fit
            )
        }
    }
}

Пытался поднять его на функцию CardTask, но все равно не работает. Может ли кто-нибудь мне помочь, пожалуйста?

Возможно, вам поможет, если вы включите код, который увеличивается curDay

Philio 26.04.2024 22:50
2
1
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Насколько я понимаю, вы можете полностью удалить эту переменную. Государство ни для чего не нужно. Вместо этого создайте свой LazyColumn следующим образом:

LazyColumn(contentPadding = it) {
    itemsIndexed(tasks) { index, task ->
        CardTask(task = task, day = index + 1)
    }
}

Единственное, что заслуживает такой переменной, - это если вы хотите по какой-то причине изменить «+1» во время выполнения. Тогда необходима переменная состояния. Но его нельзя изменять при построении LazyColumn.

Большое спасибо. Теперь все работает

Pavlo 26.04.2024 23:27

Другие вопросы по теме