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 mehrerenImageView
s undTextView
s, 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