Android: vista compuesta personalizada generada dinámicamente recreada en RecyclerView, que causa un bajo rendimiento

Estoy usando una costumbreCompoundView que se extiendeLinearLayout para mostrar elementos de unRecyclerView. Cada elemento muestra un artículo que contiene múltiples párrafos e imágenes.

losCompoundView agregaTextView oImageView basado dinámicamente en los datos adjuntos porCompoundView.setData(List<DataPiece> pieces), cuyo número se desconoce antes de que se adjunten los datos.

CadaDataPiece objeto diceCompoundView ya sea un texto o una imagen. Y aquí está el código paraCompoundView.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;
        }
    }
}

En elRecyclerView.Adapter.onBindViewHolder(), los datos se adjuntan aCompoundView llamandoMyViewHolder.compoundView.setData(...). Y funciona bien cuando elRecyclerView es creado.

Sin embargo, por unCompoundView artículo con múltiplesImageViews yTextViews, cuando me alejo de él y luego retrocedo, el desplazamiento se vuelve muy suave.

Supongo que es porqueremoveAllViews() ensetData() se llama y elCompoundView El reciclador ejecuta nuevamente el for-loop. Pero no sé cómo evitar esto.

Y también me pregunto por qué el desplazamiento siempre es suave cuando se usaTextView(con imágenes) en unRecyclerView Incluso es reciclado también.

¡Gracias por adelantado!

Respuestas a la pregunta(2)

Su respuesta a la pregunta