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с иTextViews, когда я прокручиваю от него и затем возвращаюсь назад, свиток становится сильно неровным.

Я думаю, это потому, чтоremoveAllViews() вsetData() называется, аCompoundView цикл создания снова выполняется утилизатором. Но я не знаю, как этого избежать.

И мне также интересно, почему прокрутка всегда гладкая при использованииTextView(с изображениями) вRecyclerView даже это переработано тоже.

Заранее спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос