Size: a a a

2019 June 20

AT

Andrey Timofeev in GitFox
Maksim Sukhotski
отправил картинкой, чтоб читалось
Замени на обычный var category:Category? = null, если надо возвращай дефолтную категорию
источник

SV

Sviat Volkov in GitFox
Maksim Sukhotski
отправил картинкой, чтоб читалось
nullable данные во вьюхолдере это норм кейс
источник

MS

Maksim Sukhotski in GitFox
решение!)
источник

MS

Maksim Sukhotski in GitFox
а почему нельзя тогда var category:Category by Delegates.notNull()
источник

MS

Maksim Sukhotski in GitFox
избавит от нулабилити
источник

MS

Maksim Sukhotski in GitFox
и будет стрелять,е сли кто-то воспользуется холдером без биндинга
источник

KT

Konstantin Tskhovrebov in GitFox
lateinit только для инжектов - это правда.
но для вьюхолдеров, чтобы не страдать проверками на нулл, там где их не должно быть мы тоже используем. только ради небольшого сокращения.
источник

AK

Andrey Khitryy in GitFox
источник

AP

Alexey Pushkarev in GitFox
Maksim Sukhotski
как отрефакторить в таком случае код, чтобы lateinit исчез? предоставляется ли это вообще возможным?)

inner class ViewHolder(view: View) :
       RecyclerView.ViewHolder(view) {

       private lateinit var category: Category

       init {
           view.setOnClickListener {
               clickListener(category)
           }
       }

       fun bind(item: Category) {
           category = item
           itemView.name.text = item.name
       }
}
зачем вообще хранить ссылку на сategory? Обычно у адаптера же есть getItem(position). Позицию внутри вьюхолдера можно получить с помощью getAdapterPosition()
источник

AP

Alexey Pushkarev in GitFox
ну и собственно т.к. вьюхолдер иннер класс, то у него есть доступ к адаптеру
источник

KT

Konstantin Tskhovrebov in GitFox
чтобы не страдать фигней. прокидывать позицию, доставать элементы и прочая странная логика
источник

AP

Alexey Pushkarev in GitFox
init {
        view.setOnClickListener {
       
   clickListener(getItem(adapterPosition))
       }
    }


вроде норм
источник

MS

Maksim Sukhotski in GitFox
Alexey Pushkarev
init {
        view.setOnClickListener {
       
   clickListener(getItem(adapterPosition))
       }
    }


вроде норм
так у меня же это не в классе адаптера, а в классе адаптер делегата
источник

AP

Alexey Pushkarev in GitFox
Maksim Sukhotski
так у меня же это не в классе адаптера, а в классе адаптер делегата
а у делегата нет доступа к адаптеру?
источник

MS

Maksim Sukhotski in GitFox
Alexey Pushkarev
а у делегата нет доступа к адаптеру?
нету
источник

AP

Alexey Pushkarev in GitFox
можно передать в конструктор
источник

ES

Eugene Shapovalov in GitFox
Можно еще клик сетать в bind
источник

AP

Alexey Pushkarev in GitFox
Eugene Shapovalov
Можно еще клик сетать в bind
тоже вариант, но тогда на каждый бинд будет конечно создаваться новый кликлистенер
источник

ES

Eugene Shapovalov in GitFox
Alexey Pushkarev
тоже вариант, но тогда на каждый бинд будет конечно создаваться новый кликлистенер
а как это будет влиять?
источник

AP

Alexey Pushkarev in GitFox
Eugene Shapovalov
а как это будет влиять?
ну, в смысле новый листенер на каждый бинд, лишний раз память выделять, мелочи конечно...
источник