169 похожих чатов

Всем привет! Использую 5 layout , юзаю их через itemViewType

в recyclerview , каким образом можно получить доступ к view ? например у второго layout надо взять его button и сделать clickable false

37 ответов

12 просмотров

а в чем проблема в Holder прописать?

Rustam- Автор вопроса

думаю харкод будет если прописать в бинд условие и апдейтить его через адаптер

Не совсем понял вас. У вас 5 layout, значит и 5 viewHolder, в которых вы ищете элементы и обрабатываете его

Rustam- Автор вопроса

ваш метод не подойдет для этого, холдер должен просто заполнять ячейки без каких либо условий , мне надо через адаптер ему обращаться

что значит обращаться? Для чего? ViewHolder должен зависить от модели. Хотите чтобы ViewHolder что-то перерисовал, то обновите модель просто и обновите data в adapter и все

Rustam- Автор вопроса

мне не надо данные обновлять , надо его вью элементам обращаться

Такое нельзя делать, так понятно? ViewHolder занимается только показом информации, все

Rustam- Автор вопроса

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

Нельзя получить доступ к его view извне. Все через модель

Rustam- Автор вопроса

пфф, пожалуйста если не шарите не пишите так, можно получить, просто у меня разные holder по viewType он его показывает , чисто из за него все становиться сложно

наивный, мы же в мире джавы, можем приватное финальное поле изменить

Покажите код, иначе я вас не понимаю, что вы хотите сделать

Rustam- Автор вопроса

Все просто , надо сделать button enabled false (не кликаю)

в модели добавьте параметр isButtonEnabled, в bind в ViewHolder делайте в зависимости от этого параметра модели кнопку доступной или нет.

Rustam- Автор вопроса

Вариант , но не хотелось бы прописывать отдельную переменную на модельку , спасибо за совет , если ничего из этого не выйдет сделаю так

там же можно вроде через position просто проверить 2 он или нет? или это не то

Ну разные холдеры, а у них свои вьюхи

Rustam- Автор вопроса

Если юзать viewType все усложняется а так смело через getView() или getViewHolderByAdapterPosition() мог бы изменить состояние вью

Rustam- Автор вопроса

Вот не могу получить доступ к ним через адаптер

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

Rustam- Автор вопроса

Вот это фигню не могу прописать , всегда null возвращает

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

Rustam- Автор вопроса

Методы такие как getView() getViewHolderByAdapterPosition () null возвращают

Это же не методы ресайклер адаптера. Там должны быть типо Holder getItem и int getItemViewType

Rustam- Автор вопроса

Холдер прописывается в onCreateViewHolder() и только

Что за "прописывается", показывай весь адаптер

"прописывается" очень не профессионально названо)

зачем ты к словам придираешься?

правильно делаю

Rustam- Автор вопроса

Код на работе , имел ввиду что холдер инициализируется в onCreateViewHolder () и возвращает разные view , как вы получили бы доступ к holder ?

на прямую лучше не делать, лучше обновлять конкретную модель в списке и вызывать соответсвующий notify

т.е образно, у 4 вьюхи нужно что-то поменять, sourcelist[4].clickable = false. adapter.notifyItemChanged(4). а в онБинде соотвественно смотреть на все эти поля

Rustam- Автор вопроса

В листе только данные, если Я вас правильно понял то в этом случае не сработает [4].clickable = false

clickable это поле а модели данных. На деле там может быть что-то типа isOrderCompleted и т.д. Суть в том, что состояния вью должны зависеть от данных. Не нужно напряямую искать вью

Rustam- Автор вопроса

Ради только 1 го view которого нужно на 1-2 секунды сделать не кликабельным и для этого в модельку прописывать отдельную переменную что-то не хочется

та ради Бога. Прекрасного времени препровождения 👍

Rustam- Автор вопроса

😂😂😂 спасибо вам ! Ценю , ну если не получится сделаю иначе что-ли)

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта