Привязка вида: есть ли способ в общем раздувать макет, учитывая идентификатор макета? - PullRequest
1 голос
/ 01 февраля 2020

При связывании данных у нас есть класс DataBindingUtil, у которого есть метод inflate, который может обрабатывать любой идентификатор макета:

binding = DataBindingUtil.inflate<ViewDataBinding>(inflater, layoutId, parent, false)

При связывании с представлением не существует класса ViewBindingUtil. Методы Inflate предназначены для вызова на конкретных типах привязки. Но что, если вы заранее не знаете конкретный тип привязки? Одно из решений заключается в выполнении оператора when для layoutId:

binding = when (layoutId) {
    R.id.layout1 -> Layout1Binding.inflate(...)
    R.id.layout2 -> Layout2Binding.inflate(...)
    R.id.layout3 -> Layout3Binding.inflate(...)
    etc...
}

Но это много кода по сравнению с одним линером привязки данных. Есть ли способ лучше? Я нашел эту стороннюю библиотеку, но похоже, что она использует отражение: https://github.com/matsudamper/ViewBindingUtil

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...