我有一个ArrayDeque类型的MutableLiveData。我正在试着观察它。当我第一次给它赋值(创建ArrayDeque)时,它是有效的,但我尝试做的是观察内容的变化,即何时添加新条目或何时删除条目。
var moveHistory = MutableLiveData<ArrayDeque<Move>>()
..
moveHistory.value = ArrayDeque<Move>() <<--- this fires
moveHistory.value?.addFirst(MontanaMoveStandard(from, to)) <<- this doesn't fire这是我的观察代码:
moveHistory.observe(this, Observer {
moveHistory -> undoButton?.isEnabled = moveHistory.size > 0
})发布于 2019-04-02 05:50:41
这就是我最后所做的。
我创建了自己的类MoveHistory,它扩展了MutableLiveData并对其执行操作。我向它添加了我使用的方法(addFirst和pollFirst),然后按照Luksprog的建议为它自己重新赋值
这就是我最后学到的课程:
class MoveHistory(): Serializable, MutableLiveData<ArrayDeque<Move>>(){
init {
value = ArrayDeque<Move>()
}
fun addFirst(move: Move) {
value?.addFirst(move)
value = value
}
fun pollFirst(): Move {
var move = value?.pollFirst()
value = value
return move!!
}
}现在,我要做的就是在该类的一个实例上注册我的观察者,并使用这些方法来添加和删除。
https://stackoverflow.com/questions/55454306
复制相似问题