Я новичок в Recyclerviews и пытаюсь изменить viewHolder из функции вне OnBindViewHolder (я собираюсь изменить цвет фона viewHolder).
я пытался: - чтобысохраните ViewHolders в массиве ViewHolders и измените их.- чтобы получить вид из окна переработчика напрямую.- получить держатель вид по идентификатору напрямую и изменить его.И многое другое ... Все, что я пробовал, не удалось, и я обнаружил, что некоторые представления работают, и мне удалось изменить их цвета, но затем я получаю сообщение об ошибке, сообщающее, что некоторые представления являются нулевыми.я попытался добавить свое представление из onBindViewHolder, но кажется, что мои представления вызываются несколько раз при прокрутке.Мое последнее решение - добавить в список видоискатель из метода onCreateViewHolder.По какой-то причине кажется, что ViewHolders сохраняются, когда просмотрщик полностью прокручивается, и я понятия не имею, что происходит .. пожалуйста, помогите.это код для метода OncreateViewHolder:
@ Переопределить общедоступный RecyclerView.ViewHolder onCreateViewHolder (родительский элемент ViewGroup, int viewType) {
View view ;
switch (viewType) {
case item_nature.IF_TYPE:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.if_layout, parent, false);
IFViewHolder v = new IFViewHolder(view);
Holders.add(v);
return v;
case item_nature.ELSE_TYPE:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.else_layout, parent, false);
ELSEViewHolder v1 = new ELSEViewHolder(view);
Holders.add(v1);
return v1;
case item_nature.THEN_TYPE:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.then_layout, parent, false);
THENViewHolder v2 = new THENViewHolder(view);
Holders.add(v2);
return v2;
case item_nature.END_TYPE:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.end_layout, parent, false);
ENDIFViewHolder v3 = new ENDIFViewHolder(view);
Holders.add(v3);
return v3;
case item_nature.CALENDAR:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.calendar_layout, parent, false);
CALENDARViewHolder v4 = new CALENDARViewHolder(view);
Holders.add(v4);
return v4;
case item_nature.LOCATION:
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.location_layout, parent, false);
LOCATIONViewHolder v5 = new LOCATIONViewHolder(view);
Holders.add(v5);
return v5;
}
return null;
}