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.
Ho riscontrato un problema simile con Glide ma non cambio padding né nulla di vista correlato. È un disastro, davvero. –