5

sto usando recyclerView e Glide per implementare una galleria orizzontale, e qui è il codice principale:spettacoli RecyclerView + Glide si traducono in un pasticcio

@Override 
public void onBindViewHolder(ViewHolder holder, final int position) { 
    if (mListener != null) { 
     holder.mImageView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       mListener.onListItemClick(v, position); 
      } 
     }); 
    } 
    Firmware.VideoModel videoModel = mDataList.get(position); 
    String url = videoModel.getPreurl(); 
    if (position == 0) { 
     holder.mImageView.setPadding(mCtx.getResources().getDimensionPixelOffset(R.dimen.activity_horizontal_margin) - mCtx.getResources().getDimensionPixelOffset(R.dimen.image_margin), holder.mImageView.getPaddingTop(), holder.mImageView.getPaddingRight(), holder.mImageView.getPaddingBottom()); 
    } else if (mDataList != null && position == mDataList.size() - 1) { 
     holder.mImageView.setPadding(holder.mImageView.getPaddingLeft(), holder.mImageView.getPaddingTop(), mCtx.getResources().getDimensionPixelOffset(R.dimen.activity_horizontal_margin), holder.mImageView.getPaddingBottom()); 
    } 
    if (mDataList != null && mDataList.size() >= 0) { 
     Glide.with(mCtx).load(url).placeholder(R.drawable.image_placeholder).error(R.drawable.image_placeholder).into(holder.mImageView); 
     if (videoModel.isVideo()) { 
      holder.mImageButton.setVisibility(View.VISIBLE); 
     } else { 
      holder.mImageButton.setVisibility(View.GONE); 
     } 
    } 
} 

ho cercato di impostare un'imbottitura spazio per la prima e la l'ultima immagine in modo da poter scorrere tutte le immagini sul bordo dello schermo, proprio come su Google Play.

Purtroppo qui è il problema:

Come recyclerView riciclare vista quelli che non sono nella zona visibile, le imbottiture ho set sarà in un pasticcio, come ho scorrere questo recyclerView a destra ea sinistra. L'imbottitura sarà aggiunto al secondo, anche il terzo o qualsiasi altra immagine se punto di vista della posizione è stata riciclata ...

ho stackoverflowd la risposta, uno di loro è di chiamare:

holder.setIsRecyclable(false) 

Questo funziona davvero. Ma questo non ha senso usare un RecyclerView giusto? Quindi spero che qualcuno possa aiutarmi. Grazie.

+0

Ho riscontrato un problema simile con Glide ma non cambio padding né nulla di vista correlato. È un disastro, davvero. –

risposta

0

Non modificare il padding in modo dinamico anziché utilizzare alcuni tipi diversi di ViewHolder (con layout diversi) o LayoutManager personalizzato per le proprie esigenze.