我正在制作一个 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)
也就是说,我更改原始数组,然后删除状态数组并完全重新创建它。 当然我觉得这没有效果,想知道可以做什么?
mutableStateListOf
:
创建一个可观察且可以快照的 MutableList 实例。
val players = mutableStateListOf<Player()
players.add(Player(1, "00", 0)) // will cause recomposition