android - 当我单击列表中的第一个项目时,它会删除所有项目
问题描述
当我在 foreach 中创建 mutableStateOf (true) 以隐藏行并单击第一项时,会删除所有val visible = arrayOf <MutableState<Boolean>> ()
选项在 foreach 中执行此操作的方法如何解决此错误
我的代码:
@Composable
private fun Content(){
Column(modifier=Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Top){
//val visibles= arrayOf<MutableState<Boolean>>()
if(i.isNotEmpty()){
i.forEachIndexed { index, item ->
var quantidades by remember{ mutableStateOf(TextFieldValue(item.quantidade.toString())) }
var visible by remember {
mutableStateOf(true)
}
if(visible) {
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = Modifier
.padding(bottom = 8.dp)
.fillMaxWidth(100f)
) {
CoilImage(
data = item.photo,
contentDescription = item.name,
fadeIn = true,
loading = {
Box(Modifier.fillMaxSize()) {
CircularProgressIndicator(Modifier.align(Alignment.Center))
}
},
modifier = Modifier
.size(100.dp),
error = {
Image(
painterResource(R.drawable.ic_launcher_background),
contentDescription = "Error"
)
}
)
Text(
text = item.name,
fontSize = 15.sp,
modifier = Modifier.padding(end = 20.dp)
)
// Text(text=item.count.toString())
// Text(text=item.id.toString())
TextField(
value = quantidades,
onValueChange = {
quantidades = it
//_addUserState.value = _addUserState.value?.copy(name = it)
},
shape = RoundedCornerShape(8.dp),
colors = TextFieldDefaults.textFieldColors(
focusedIndicatorColor = Color.Transparent,
unfocusedIndicatorColor = Color.Transparent,
disabledIndicatorColor = Color.Transparent
),
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Number,
imeAction = ImeAction.Next
),
modifier = Modifier
.width(50.dp)
.height(50.dp)
)
Column(
modifier = Modifier
.fillMaxWidth(100f)
.padding(5.dp), horizontalAlignment = Alignment.End
) {
Button(
onClick = { visible=onVisible(visible,item) },
modifier = Modifier.padding(end = 20.dp)
) {
Icon(
Icons.Default.Delete,
stringResource(id = R.string.deletar)
)
}
}
}
}
}
}else{
Text(text= stringResource(id = R.string.sem_carrinho), fontSize = 15.sp)
}
}
}
private fun onVisible(visible: Boolean, item:ShoppingCart):Boolean{
counter.value--
i.remove(item)
return !visible
}
解决方案
我复制并粘贴了您的代码,但无法运行它。但是您是否尝试过为每个visible
州使用一个密钥?
var visible by remember(index) { mutableStateOf(true) }
推荐阅读
- amazon-web-services - 放大发布导致 AccessDenied 错误
- javascript - 如何在回调执行结束时开始的间隔内运行 Javascript 函数?
- java - Mockito - 如何要求模拟 Java Lambda 函数
- javascript - 如果使用 min 和 max,输入类型号会显示问题
- python - 如何将 .px 文件转换为数据框
- android - 运行时位置权限问题
- c# - 使用 DescribeInstancesAsync 获取 AWS EC2 实例数据的 Dotnet 核心代码示例
- .net - 使用 .net Selenium,悬停并从导航菜单中选择
- java - 什么是根据元素频率对数组元素进行排序的最有效方法
- proxy - Nuxt:代理 VS 异步数据 VS 重新加载页面