Jetpack Compose:如何在列表顶部添加元素(替代reverseLayout)
在列表顶部添加String元素的基础方法
你遇到的类型不匹配问题,是因为cont是单个String,而conts是String类型的列表,直接用+运算符会把String和List拼接,这在Kotlin里是不允许的。下面是两种基础的解决方法,不需要依赖reverseLayout就能实现新元素添加到列表顶部:
方法1:通过单元素列表拼接
把新输入的cont包装成一个单元素列表,再和原列表拼接,这样新元素就会出现在列表头部:
修改Button的点击逻辑:
Button( onClick = { if (cont.isNotBlank()) { // 用listOf(cont)将单个String转为列表,再和原列表拼接 conts = listOf(cont) + conts cont = "" } } ) { Text(text = "Add") }
然后移除LazyColumn的reverseLayout属性:
LazyColumn{ items(conts){ currentcont-> Text(text = currentcont) } }
方法2:使用MutableList的add(0, element)方法
先把原不可变列表转为MutableList,调用add(0, cont)直接在索引0的位置添加元素(也就是列表顶部),再将MutableList赋值回conts:
修改Button的点击逻辑:
Button( onClick = { if (cont.isNotBlank()) { val mutableList = conts.toMutableList() // 在索引0处添加新元素 mutableList.add(0, cont) conts = mutableList cont = "" } } ) { Text(text = "Add") }
同样记得移除LazyColumn的reverseLayout属性,这样新添加的元素就会直接显示在列表最上方。
内容的提问来源于stack exchange,提问作者Enes
相关产品推荐
相关产品推荐

