Как избежать requestModelBuild для каждого виджета в обзоре переработчика - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть вид рециркулятора с виджетами с фиксированным числом по вертикали в указанном порядке c. Некоторые виджеты также содержат табличные данные, поэтому я рассмотрел возможность использования вложенного представления переработчика внутри него.

Каждый виджет выполняет http-вызов асинхронно из ViewModel и связывает данные с epoxyController, как я упоминал ниже.

Когда requestModelBuild () вызывается для каждого виджета, когда они получают данные через установщики publi c, например priceViewData, packageData и et c, откуда вызывается requestModelBuild (). Таким образом, в этом случае каждое связывание виджета происходит независимо от того, каждый раз, когда данные получены для любого из виджетов. Это, кажется, тоже дорого, там некоторые аналитики запускаются так, как нам нужно для каждой привязки.

Итак, здесь вызов аналитики для виджета умножается. Пожалуйста, предложите, если это может быть обработано через эпоксидную смолу без обработки вручную.

class ProductDetailsEpoxyController(val view: View?,
                              private val name: String?,
                              private val context: Context?) : 
 AsyncEpoxyController() {

private val args = bundleOf("name" to name)

var priceViewData: IndicativePriceViewData? = emptyPriceViewData()
    set(value) {
        field = value
        requestModelBuild()
    }

var packageData: PackageViewData? = emptyPackageWidgetViewData()
    set(value) {
        field = value
        requestModelBuild()
    }

   ...
   ...



override fun buildModels() {
    buildPriceViewData()
    buildPackageViewData()
    ....
}

private fun buildPriceViewData(){
    priceViewData?.let {
        id("price")
        priceViewDataModel(it)
    }
}

private fun buildPackageViewData(){
    packageViewData?.let {
         id("package")
          packageViewDataModel(it)
    }
}

  ...
  ...

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