我有一个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
})
答案 0 :(得分:0)
这是我最后所做的。
我创建了自己的类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!!
}
}
现在我要做的就是在该类的实例上注册我的观察者,并使用添加和删除方法。