我想把我的String元素添加到列表的顶部。我知道我可以使用Lazy Column的反向布局方式。
var cont by remember {
mutableStateOf("")
}
var conts by remember {
mutableStateOf(listOf<String>())
}
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp)
) {
Row(
modifier= Modifier
.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween
) {
OutlinedTextField(
value = cont,
onValueChange = { text ->
cont = text
})
Button(
onClick = {
if (cont.isNotBlank()) {
conts = conts + cont
cont = ""
}
}
) {
Text(text = "Add")
}
}
Spacer(modifier= Modifier.height(10.dp))
LazyColumn(reverseLayout = true){
items(conts){ currentcont->
Text(text = currentcont)
}
}
}
字符串
在这种情况下,我可以显示在相反的顺序感谢reverseLayout。
我试着把这东西拿掉。在'if块'中,如果我尝试更改conts=cont+conts
的添加代码,它会给出类型不匹配错误,因为conts需要列表的字符串类型,这是有意义的,但找不到任何其他方法。
我想知道是否有任何基本的方法来添加列表的顶部。
1条答案
按热度按时间8zzbczxx1#
当你尝试跑步时:
字符串
它失败了,因为你不能把一个字符串和一个列表连接起来。String类中没有方法
plus(List)
。但是,List类中有一个方法plus(String)
,所以下面的代码是正确的:型
为了将元素添加到[immutable]列表的开头,您可以尝试以下操作:
型
现在,您创建了一个只有一个元素的列表(
cont
),然后将该列表连接到另一个列表(const
),这正是您所期望的。