如何创建一个可以跟踪状态的列表,并且仍然不需要每次都创建一个新列表? (jetpack 撰写)

问题描述 投票:0回答:1

我正在制作一个 Android 应用程序,它将是一款纸牌游戏。

val players = arrayOf(
    Player(1, "00", 0),
    Player(2, "00", 0),
    Player(3, "00", 0),
    Player(4, "00", 0),
    Player(5, "00", 0),
    Player(6, "00", 0),
    Player(7, "00", 0),
    Player(8, "00", 0),
    Player(9, "00", 0),
    Player(10, "00", 0),
)
val playersState = remember { mutableStateListOf(*players) }

然后我调用显示函数:

showPlayers(stateBottomToggle, playersState)
showHandSelection(stateBottomToggle, playersState, value1, value2, value3)

如何创建这样的列表,以便在其中进行更改时,屏幕会重新绘制,而无需再次创建整个列表(因为它是资源密集型的)。

在我看来,理想情况下,创建一个类来存储所有常见和单独的设置,即一些开关和玩家列表。并将该类的实例传递给每个函数并使用它。可以这样做吗?如果不可以,那该怎么办?

这就是我目前的工作方式:

players[selectedPlayer-1].hand = key_to_hand_h[hand]
playersState.removeRange(0, 10)
playersState.addAll(players)

也就是说,我更改原始数组,然后删除状态数组并完全重新创建它。 当然我觉得这没有效果,想知道可以做什么?

android android-jetpack-compose android-jetpack android-jetpack-navigation android-jetpack-compose-material3
1个回答
0
投票

看看

mutableStateListOf

创建一个可观察且可以快照的 MutableList 实例。

val players = mutableStateListOf<Player()
players.add(Player(1, "00", 0))  // will cause recomposition
© www.soinside.com 2019 - 2024. All rights reserved.