1

У меня есть VerticalRecyclerView, и этот вертикальный RecyclerView's каждый элемент содержит Horizontal RecyclerView. поэтому я сделал это и отлично работал, кроме коэффициента производительности, когда я прокручиваю Vertical RecyclerView, вертикальный список мерцает и дает плохое поведение. Я устанавливаю Adapter для горизонтальной RecyclerView внутри вертикальной RecyclerView поэтому каждый раз прокрутки Я создаю новый адаптер и устанавливаю данные, на самом деле это приводит к производительности. Есть ли способ оптимизировать это?Эффект мерцания при отображении горизонтального RecyclerView внутри вертикального RecyclerView

Код

onBindViewHolder(){ 
    setHorizontalList(items, horizontalolder); 
} 

setHorizontalList(ArrayList<Item> items, HorizontalHolder holder){ 
    MyAdapter adapter = new MyAdapter(); 
    adapter.setData(items); 
    holder.recyclerView.setAdapter(adapter); 
    holder.recyclerView.setLayoutManager(new LinearLayoutManager(mContext, 
        LinearLayoutManager.HORIZONTAL, false)); 
    holder.recyclerView.setHasFixedSize(true); 
} 
+0

Вы нашли решение этого? Я видел аналогичную проблему, когда мой внутренний фон элемента не является надлежащим образом wrap_content, как и должно быть. – RobGThai

+0

Да. Я создал адаптер для второго RecyclerView внутри класса ViewHolder. Так что он не будет создавать новые экземпляры. – droidev

+0

Я проделал то же самое, но мой фон угасает. Не возражаете ли вы быстро взглянуть на мою проблему? http://stackoverflow.com/questions/40823501/recyclerview-gridlayoutmanager-item-resize-to-last-item – RobGThai

ответ

0

Производительность плохо, потому что вы установили setHasFixedSize(boolean) в true, это заставит каждый вложенный горизонтальный RecyclerView, чтобы загрузить все свои взгляды, когда он становится видимым в вертикальном RecyclerView. Установка фиксированного размера на true используется для создания RecyclerView содержимого. Но чтобы обернуть свой контент, он должен знать размер своего контента, поэтому он должен создавать все взгляды, когда становится видимым (знать его максимальную высоту и ширину).

Лучший способ оптимизировать ваш вложенная RecyclerView s, чтобы не установить фиксированный размер, чтобы true .Но это, вероятно, вызовет ваши вложенные RecyclerView с, чтобы не показывать его, потому что он не знает, его высоту (с разных представлений в RecyclerView могут иметь разную высоту). Один из способов решения этой проблемы - использование жестко заданной высоты или создание собственного класса CustomRecyclerView, который расширяет RecyclerView и отменяет методы измерений.

+0

не работает, проблема связана с созданием адаптеров внутри onBindViewHolder(), вот что мне нужно оптимизировать. – droidev

Смежные вопросы