android Jetpack Compose将元素添加到列表顶部而不是ReversedLayout

l7mqbcuq  于 2023-08-01  发布在  Android
关注(0)|答案(1)|浏览(104)

我想把我的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需要列表的字符串类型,这是有意义的,但找不到任何其他方法。
我想知道是否有任何基本的方法来添加列表的顶部。

8zzbczxx

8zzbczxx1#

当你尝试跑步时:

conts = cont + conts

字符串
它失败了,因为你不能把一个字符串和一个列表连接起来。String类中没有方法plus(List)。但是,List类中有一个方法plus(String),所以下面的代码是正确的:

conts = conts + cont


为了将元素添加到[immutable]列表的开头,您可以尝试以下操作:

conts = listOf(cont) + conts


现在,您创建了一个只有一个元素的列表(cont),然后将该列表连接到另一个列表(const),这正是您所期望的。

相关问题