Android - Benutzerdefinierte dynamisch generierte zusammengesetzte Ansicht, die in RecyclerView neu erstellt wurde und zu einer schlechten Leistung führt

Ich benutze ein benutzerdefiniertesCompoundView das erstreckt sichLinearLayout, um Elemente eines @ anzuzeigRecyclerView. Jedes Element zeigt einen Artikel an, der mehrere Absätze und Bilder enthält.

DasCompoundView fügt hinzuTextView oderImageView dynamisch basierend auf den von @ angehängten DatCompoundView.setData(List<DataPiece> pieces), dessen Nummer unbekannt ist, bevor Daten angehängt werden.

JederDataPiece Objekt sagtCompoundView ob es sich um ein Textstück oder ein Bild handelt. Und hier ist der Code fürCompoundView.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;
        }
    }
}

In demRecyclerView.Adapter.onBindViewHolder(), die Daten werden an @ angehänCompoundView durch Aufrufen vonMyViewHolder.compoundView.setData(...). Und es funktioniert gut, wenn dieRecyclerView geschaffen

ür einCompoundView item mit mehrerenImageViews undTextViews, wenn ich davon weg scrolle und dann zurück scrolle, wird die Schriftrolle stark ungleichmäßig.

Ich denke, es ist, weilremoveAllViews() imsetData() heißt und dasCompoundView creation for-loop wird vom Recycler erneut ausgeführt. Aber ich weiß nicht, wie ich das vermeiden soll.

Und ich frage mich auch, warum die Schriftrolle bei Verwendung von @ immer glatt isTextView (mit Bildern) in einemRecyclerView sogar es ist auch recycelt.

Danke im Voraus

Antworten auf die Frage(4)

Ihre Antwort auf die Frage