Android - пользовательский динамически генерируемый составной вид, воссозданный в RecyclerView, что приводит к снижению производительности
Я использую кастомCompoundView
который расширяетсяLinearLayout
отображать элементыRecyclerView
, Каждый элемент отображает статью, которая содержит несколько абзацев и изображений.
CompoundView
добавляетTextView
или жеImageView
динамически на основе данных, приложенныхCompoundView.setData(List<DataPiece> pieces)
, номер которого неизвестен до прикрепления данных.
каждыйDataPiece
объект рассказываетCompoundView
будь то кусок текста или изображения. И вот код дляCompoundView.setData(List<DataPiece> pieces)
:
public void setData(List<DataPiece> pieces) {
removeAllViews();
for (DataPiece dataPiece : pieces) {
switch (dataPiece.getType()) {
case IMAGE:
ImageView imageView = new ImageView(getContext());
...
addView(imageView);
break;
case TEXT:
TextView textView = new TextView(getContext());
...
addView(textView);
break;
}
}
}
вRecyclerView.Adapter.onBindViewHolder()
, данные прикреплены кCompoundView
позвонив по телефонуMyViewHolder.compoundView.setData(...)
, И это прекрасно работает, когдаRecyclerView
создано.
Однако дляCompoundView
элемент с несколькимиImageView
с иTextView
s, когда я прокручиваю от него и затем возвращаюсь назад, свиток становится сильно неровным.
Я думаю, это потому, чтоremoveAllViews()
вsetData()
называется, аCompoundView
цикл создания снова выполняется утилизатором. Но я не знаю, как этого избежать.
И мне также интересно, почему прокрутка всегда гладкая при использованииTextView
(с изображениями) вRecyclerView
даже это переработано тоже.
Заранее спасибо!