Ich habe im Grunde alles in einem Layout, das alles für den Haupt-Feed meiner App benötigt hat. Alle variablen Elemente (Bilder, Video-Miniaturbilder usw.) werden zuerst auf GONE
gesetzt und bei Bedarf auf VISIBLE
gesetzt.Android - RecyclerView mit einem Layout, mehrere setVisibility
Das Problem ist manchmal, kann auf RecyclerView
Recycling-Verhalten sein, das Element, das GONE
sein soll, ist VISIBLE
an den falschen Stellen.
Beispiel:
Artikel-Nr 1 Text
Artikel Bild
Artikel-Nr 2 enthält keine 3 Bild
enthält Ich halte rollier x Punkt nach unten, dann scroll wieder hoch und hier ist, was ich bekomme:
Artikel-Nr 1 enthält: Bilddatei von Elemente keine x, manchmal Art.-Nr. 3
Artikel-Nr 2 Bild
Artikel enthalten keine 3 Bild
Ich verwende einen benutzerdefinierten ViewHolder enthalten die extends RecyclerView.ViewHolder
. Der Zweck der CustomViewHolder
ist für Layout-Deklaration und Initialisierung.
ProgressBar progressBar;
View viewDimmer;
RelativeLayout postListWrapper;
...
public ObjectViewHolder(View v) {
super(v);
progressBar = (ProgressBar)v.findViewById(R.id.post_inscroll_progressBar);
viewDimmer = (View)v.findViewById(R.id.post_inscroll_viewDimmer);
postListWrapper = (RelativeLayout)v.findViewById(R.id.post_inscroll_postListWrapper);
}
Ein Beispiel, wie ich das Bild laden:
Picasso.with(context)
.load(youtubeThumbnailUrl)
.fit()
.centerCrop()
.into(
((ObjectViewHolder) holder).userPostYoutubeImage
);
ich jede Sicht auf GONE
festgelegt haben, wenn keine URL von dem Server erhalten wird
((ObjectViewHolder) holder).userPostImageWrapper.setVisibility(View.GONE);
((ObjectViewHolder) holder).userPostYoutubeImageWrapper.setVisibility(View.GONE);
Aber irgendwie das Bild wird immer noch auf die vorherigen Artikel (ja, nicht nur Artikel Nr. 1) wiederverwendet. Manchmal sind auch Bilder in der falschen ImageView
. Image D soll in ImageView
D sein, aber es ist in ImageView
A stattdessen.
Irgendwelche Anleitungen zum Einstellen RecyclerView
und gehen gut?
Wenn ich etwas vermissen, oder brauchen mehr Code zu liefern, bitte ich Sie informieren: D
Es könnte sich lohnen zu sagen, warum dies wichtig ist. Der Grund dafür ist, dass Inhaber wiederverwendet werden. – Knossos
Ich habe nur Gedanken geschlagen. Danke, Reaz, dass du mir gesagt hast, dass ich etwas anderes machen soll, und danke @Knossos, dass du mir gesagt hast, dass die Inhaber wiederverwendet werden! Also die Sichtbarkeit innerhalb der Halter Nummer .. 3 zum Beispiel ist noch da, auch wenn wir zu Halter Nummer 1 bewegen? –
@Knossos Vielen Dank für Ihre hinzufügen. Ja, das ist es wert, geteilt zu werden. –