Как добавить texdfields во время выполнения и управлять значениями этих текстовых полей в Android Jetpack Compose?

Я хочу создать приложение « Прейскурант» с помощью Jetpack Compose. В прейскуранте есть разные позиции, и каждая позиция имеет разную цену в зависимости от веса. Например, яблоко (товары) цена за 1 кг составляет 100 рупий, а за 5 кг - 400 рупий и т. Д. Как и яблоко, разные товары имеют разную цену и вес. Проблема в том, как создать текстовое поле в режиме реального времени и управлять этими значениями веса и цены. Я пробую этот реактивный ранец составить код

      @compose 
fun ComposeTextFields() {
var weightTextField = remember {
    mutableStateListOf<String>()
}
var priceTextField by remember {
    mutableStateOf("")
}
var number by remember {
    mutableStateOf(0)
}
Column {
    LazyColumn {
        items(number){
            Row {
                OutlinedTextField(
                    value = weightTextField[number-1],
                    onValueChange = { weightTextField.add(number-1, it) },
                    label = { Text(text = "Weight") },
                    modifier = Modifier.weight(1f)
                )
                OutlinedTextField(
                    value = priceTextField,
                    onValueChange = {priceTextField = it },
                    label = { Text(text = "Price")},
                    modifier = Modifier
                        .weight(1f)
                        .padding(start = 5.dp)
                )
            }
        }
        item {
            TextButton(onClick = { ++number }) {
                Text("more $number")
            }
        }
    }
  }
}

Экран вывода

Пожалуйста, решите эту проблему

1 ответ

Вот ваш код работает :)

      @Composable
fun ComposeTextFields() {
    val weightTextField = remember {
        mutableStateListOf<String>()
    }
    val priceTextField = remember {
        mutableStateListOf<String>()
    }
    var number by remember {
        mutableStateOf(0)
    }
    Column {
        LazyColumn {
            items(number) { index ->
                Row {
                    OutlinedTextField(
                        value = weightTextField[index],
                        onValueChange = { weightTextField[index] = it },
                        label = { Text(text = "Weight") },
                        modifier = Modifier.weight(1f)
                    )
                    OutlinedTextField(
                        value = priceTextField[index],
                        onValueChange = {
                            priceTextField[index] = it
                        },
                        label = { Text(text = "Price") },
                        modifier = Modifier
                            .weight(1f)
                            .padding(start = 5.dp)
                    )
                }
            }
            item {
                TextButton(onClick = {
                    ++number
                    weightTextField.add("100g")
                    priceTextField.add("100")
                }) {
                    Text("more $number")
                }
            }
        }
    }
}
Другие вопросы по тегам