Неправильно ли пользовательское представление об изменении LiveData? - PullRequest
0 голосов
/ 30 марта 2020

У меня есть пользовательское представление с множеством настраиваемых атрибутов, которые связаны с объектом LiveData через библиотеку привязки данных.

Я полагал, что представление автоматически станет недействительным при изменении LiveData, но, похоже, это не так.

Я создал для каждого атрибута сеттеры, вызывая в каждом из них invalidate().

Является ли это оптимальным способом? this?

class CustomView(context: Context, attrs: AttributeSet) : View(context, attrs) {

    private var attributeA = 0
    private var attributeB = 0
    private var attributeC = 0


    fun setAttributeA(value: Int) {
        attributeA = value
        invalidate()
    }

    fun setAttributeB(value: Int) {
        attributeB = value
        invalidate()
    }

    fun setAttributeC(value: Int) {
        attributeC = value
        invalidate()
    }

    // view logic omitted
}

Некоторые альтернативы избавления от избыточных сеттеров могут быть следующими: a) Соблюдать LiveData в Fragment и аннулировать представление там? б) Создайте пользовательский адаптер привязки для всех изменяемых атрибутов.

Я не уверен, какой путь к go.

...