Как провести рефакторинг большого адаптера вьюблера? - PullRequest
0 голосов
/ 01 марта 2020

У меня в коде есть очень большой recyclerView с большим количеством операторов if в onBindViewHolder: иногда позиции с 1 по 5 будут иметь это представление, иногда они будут иметь другое представление, а иногда - другие представления. У меня есть более 20 позиций в некоторых случаях, а некоторые позиции иногда имеют 3 варианта.

Могу ли я создать класс для каждого указанного c варианта, а затем написать что-то вроде

override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
   if (variant 1) {
      Variant1Class.onBindViewHolder(holder, position)
   }
   else if (variant 2) {
      variant2Class.onBindViewHolder(holder, position)
   }
   else {
     variant3Class.onBindViewHolder(holder, position
   }

}

Это Я могу разделить логи c на несколько файлов. Проблематично ли c передавать переменную "holder"? Неужели это проблематично c по какой-то другой причине?

Если у вас есть другое решение, у меня все уши!

Лучший

...