RecyclerView图像处于错误的位置

时间:2018-01-05 15:52:28

标签: android android-recyclerview picasso

我使用fun String.intOrString() = try { // returns Any toInt() } catch(e: NumberFormatException) { this } 来显示图片网格,但有些图片显示在错误的位置,或者出现两次或更多次。

这是我的Picasso方法的代码:

onBindViewHolder

使用 @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) { PhotoViewHolder photoViewHolder = (PhotoViewHolder) viewHolder; // photoViewHolder.setIsRecyclable(false); File imageDir = context.getDir(IMAGE_DIR, Context.MODE_PRIVATE); Post userPost = dataset.get(photoViewHolder.getAdapterPosition() - 1); if (networkUtils.isOnline()) { Picasso.with(context) .load(userPost.getImage()) .placeholder(R.color.image_placeholder_color) .centerCrop() .fit() .into(photoViewHolder.imageView); } else { String postId = String.valueOf(userPost.getPostId()); if (imageDir.exists()) { Picasso.with(context) .load(new File(imageDir + "/" + postId + IMAGE_SUFFIX)) .placeholder(R.color.image_placeholder_color) .centerCrop() .fit() .into(photoViewHolder.imageView); } } photoViewHolder.imageView.setOnClickListener(view -> BusProvider.getInstance().post(new OpenUserProfilePhotoEvent( userPost.getPostId(), Integer.valueOf(accountId)))); } 有助于解决此问题,但它超出了setIsRecyclable(false)的目的。

你能找到RecyclerView的错误吗?

1 个答案:

答案 0 :(得分:0)

使用dataset.get(position)代替dataset.get(photoViewHolder.getAdapterPosition() - 1)。