观察ArrayDeque的内容

时间:2019-04-01 11:43:35

标签: android observable android-livedata

我有一个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
    })

1 个答案:

答案 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!!
    }
}

现在我要做的就是在该类的实例上注册我的观察者,并使用添加和删除方法。