элементов списка ресайклервью, тобишь 3 разных класса ViewBinding.
Я могу в котлин прописать следующую конструкцию:
if (this is ListFirstBinding || this is ListSecondBinding || this is ListThirdBinding) {
with(this) {
}
}
чтобы она работала?
если нет, какие у меня есть альтернативы?
у меня есть в файлах вёрстки элементы с одинаковыми названиями и вместо 3 одинаковых кусков кода для их инициализации я хотел бы 1 использовать кусок кода. Но пример, который я выше описал, не сработал, а альтернатива не приходит в голову пока
adapter viewType?
но с вьютайп мы вызываем метод конкретно у того или иного вьюхолдера, а не метод адаптера ресайклер вью, который ждёт на входе один из 3 типов классов
Общее поведение для разных экземпляров VB не уверен, что так можно. Но можно извратиться. Сделать общую функцию, куда предавать нужные вью и данные для них.
понял, спасибо, значит не буду сейчас над этим голову ломать)
Кроме того, если общие вью в разных лэйаутах вынести в include, то для них сгенерится свой vb. Вот его можно использовать для единообразного обновления этих вью.
А если просто наследование? И описать инициализацию в базовом классе вьюхолдера?
наследование тут не поможет по той причине, что у всех трёх вьюхолдеров разные ViewBinding классы передаются и в них нет переиспользованных элементов например через include
Ну а те вью которые инитятся одним куском кода имеют один и тот же тип?
да
Так в базовом классе опиши метод, который принимает это вью. Или задай абстракт проперти/метод для получения этой вью и через неё, а в наследниках просто определишь какое вью брать
Спасибо
Обсуждают сегодня