У меня есть пользовательское представление с множеством настраиваемых атрибутов, которые связаны с объектом 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.