代码之家  ›  专栏  ›  技术社区  ›  Jorpy

如何在Jetpack Compose中更改LazyColumn点击按钮的元素?

  •  0
  • Jorpy  · 技术社区  · 1 年前

    如何更改Jetpack Compose中lazyColumn onclick按钮的元素?我想在单击“下一步”按钮时更改lazycolumn的元素。

    val characters = mutableListOf("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z")
    var randomElement = characters.random()
    var randomElement2 = characters.random()
    var randomElement3 = characters.random()
    var randomElement4 = characters.random()
    var elements = mutableListOf(randomElement, randomElement2, randomElement3, randomElement4)
    @Composable
    fun MyUi() {
        Column() {
            LazyColumn(content = {
                items(elements.size) { index ->
                    Text(
                        text = elements[index],
                    )
                }
            })
            Column() {
                Button(onClick = {
                    var randomElementAnswer = characters.random()
                    var randomElementAnswer2 = characters.random()
                    var randomElementAnswer3 = characters.random()
                    var randomElementAnswer4 = characters.random()
                    elements = mutableListOf(randomElementAnswer, randomElementAnswer2, randomElementAnswer3, randomElementAnswer4)
                }) {
                    Text(text = "Next")
                }
            }
        }
    }
    
    1 回复  |  直到 1 年前
        1
  •  1
  •   Abhimanyu    1 年前

    你必须使用 State 在Jetpack Compose中存储和使用状态。

    val characters = mutableListOf("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z")
    
    fun getData() = List(4) { characters.random() }
    
    @Composable
    fun RandomElementsDemo() {
        var elements by remember {
            mutableStateOf(getData())
        }
    
        Column {
            LazyColumn {
                items(elements) {
                    Text(it)
                }
            }
            Button(
                onClick = {
                    elements = getData()
                },
            ) {
                Text("Next")
            }
        }
    }