如何在运行时添加 texdfields 并在 android jetpack compose 中管理这些文本字段值?

Posted

技术标签:

【中文标题】如何在运行时添加 texdfields 并在 android jetpack compose 中管理这些文本字段值?【英文标题】:How to add texdfields at runtime and manage those textfields values in android jetpack compose? 【发布时间】:2021-11-08 00:24:56 【问题描述】:

我想使用 jetpack compose 创建一个 Rate List 应用程序。价格表有不同的项目,每个项目根据重量有不同的价格。例如苹果(物品)1 公斤的价格是 100 卢比,5 公斤的价格是 400 卢比等。像苹果一样,不同的物品有不同的价格和重量。 问题是如何在 rumtime 创建文本字段并管理这些重量和价格值。 我试试这个 jetpack 撰写代码

@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")
                
            
        
    

【讨论】:

以上是关于如何在运行时添加 texdfields 并在 android jetpack compose 中管理这些文本字段值?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改按钮标签文本并在运行时添加新功能?甲骨文表格

如何添加新的 js 代码并在 BODY 上运行? [复制]

如何使用 VBA 以编程方式添加引用

如何在 Interface Builder 中存储键/值并在运行时访问它们?

保存音频文件并在视图之间导航

如何在数字海洋水滴上运行进程并在注销时保持运行? [复制]