我寫了硬編碼的ToDo元素串列,并做了2個可組合的函式來顯示資料。
@Composable
fun TodoAppContent() {
val todos = remember { (DataProvider.listOfToDoEntries) }
列(
修改器 = 修改器
.填充最大尺寸()
.background(Color(0xff503d69)
) {
LazyColumn(
contentPadding = PaddingValues(水平 = 16.dp, 垂直 = 8.dp) 。
修改器 = 修改器
.weight(1f)
) {
items( items = todos, itemContent = { CreateToDoListItem(todo = it) })
}
按鈕(
onClick = {},
修改器 = 修改器
.size(60.dp)
.對齊(alignment = Alignment.CenterHorizontally)。
顏色 = ButtonDefaults.buttonColors(backgroundColor = Color(0xffc1b6d1)。
shape = CircleShape
) {
Text(text = " ")
}
}
}
@Composable
fun CreateToDoListItem(todo: ToDo){
卡片(
修改器 = 修改器
.padding(水平 = 8.dp, 垂直 = 8.dp)
.fillMaxWidth(),
提升 = 2.dp,
backgroundColor = Color(0xff694598)。
shape = RoundedCornerShape(
topStart = 30.dp,
topEnd = 30.dp,
bottomStart = 0.dp,
bottomEnd = 30.dp
)
) {
行 {
列(
修改器 = 修改器
.padding(16.dp)
.fillMaxWidth()
.align(Alignment.CenterVertically)
) {
Text(text = todo.title, style = typography.h6)
Text(text = todo.description, style = typography.caption)
勾勒出的按鈕(
onClick = {},
修改器 = 修改器
.size(40.dp)
.對齊(alignment = Alignment.End)。
colors = ButtonDefaults.buttonColors(backgroundColor = Color(0xffc1b6d1))。
shape = CircleShape
) {
Text(text = "X")
}
}
}
}
}
它作業得很好,但當我想實作在串列中添加新條目和通過改變洗掉它等操作時
val todos = remember { mutableStateListOf(DataProvider.listOfToDoEntries) }
我不再接收單個ToDo物件,而是接收整個串列。有什么辦法可以接收到該mutableStateList的每一個ToDo物件?
uj5u.com熱心網友回復:
使用mutableStateListOf,你可以從一些引數創建一個可變的狀態串列。
因此mutableStateListOf(DataProvider.listOfToDoEntries)將創建一個可變的串列,這可能不是你想要的。
如果你想用另一個串列的專案來初始化一個可變的狀態串列,你可以使用toMutableStateList:
val todos = remember { DataProvider.listOfToDoEntries.toMutableStateList() }
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/311864.html
標籤:
上一篇:HTTPPOST請求是否允許傳遞有效載荷和輸入引數?
下一篇:如何讓LazyColumn有一個像Text("YouareatTopoftheList")這樣的可組合性,并在串列變大時逐漸消失?
