私のアプリのメインフィードに必要なものはすべて基本的にオールインワンレイアウトです。すべての変数項目(画像、ビデオサムネイルなど)は、最初にGONE
に設定され、必要に応じてVISIBLE
に設定されます。1つのレイアウト、複数のsetVisibilityを持つAndroid - RecyclerView
RecyclerView
さんのリサイクルの問題が原因で問題が発生することがあります。GONE
とされているアイテムは、間違った場所にあるVISIBLE
です。
例:なし1はテキスト
項目が何も2イメージ
項目NO 3イメージ
が含まれていない含まれていない私は、項目にNO xを下にスクロールしません保つ含まれていません
項目スクロールバックして、ここに私が得るもの:
商品番号1は時々アイテムなし3
項目は何の2は何の3私は
extends RecyclerView.ViewHolder
カスタムViewHolderを使用している画像が含まれていない画像
項目が含まれていない、項目からNO xを画像が含まれていません。
CustomViewHolder
の目的は、レイアウトの宣言と初期化です。 URLがサーバー((ObjectViewHolder) holder).userPostImageWrapper.setVisibility(View.GONE); ((ObjectViewHolder) holder).userPostYoutubeImageWrapper.setVisibility(View.GONE);
しかし、何とか画像から得られない場合、私は
GONE
に各可視性を設定しているPicasso.with(context) .load(youtubeThumbnailUrl) .fit() .centerCrop() .into( ((ObjectViewHolder) holder).userPostYoutubeImage );
:
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); }
私はイメージをロードする方法の例前の項目(はい、項目1のみならず)にも再利用されます。ときどき画像も間違った
ImageView
にあります。画像DはImageView
Dであるはずですが、代わりにImageView
Aにあります。
RecyclerView
を正しく設定するためのガイドはありますか?私は何かを逃し、以上のコードを供給する必要がある場合は、お知らせください:D
これがなぜ重要なのかは分かりません。理由は、ホルダーが再利用されているからです。 – Knossos
私はちょうど心が叩かれました。私が他人を使用するように言ってくれてありがとうReazに感謝し、Holdersが再利用されたことを伝えるために@Knossosに感謝します!したがって、ホルダー番号1内に移動しても、ホルダー番号3内の視認性はまだありますか? –
@Knossosあなたのご協力ありがとうございました。はい、これは分かち合う価値があります。 –