RecyclerView:向上/向下滚动时重复/复制个人资料图片



我目前正在创建一个recyclerView,它显示了一个带有图片和其他信息的人的列表。文本信息显示正确。当我在列表上快速向上/向下滚动时,只有图像或我应该说的个人资料图片有时会复制/重复,而它仍在从服务器获取图片。我一直在寻找解决方案,但我只能找到使用Glide的解决方案。我目前正在使用CircleImageView作为我的个人资料图片。这是我的onBindViewHolder代码:

public void onBindViewHolder(MembershipActivationViewHolder holder, final int position) {
    final Member m = mMembers.get(position);
    holder.name.setText(m.getName());
    holder.email.setText(m.getEmail());
    if(m.getStatus().equals("Active")){
        holder.status.setText(Html.fromHtml("<font color='#00CD00'>" + m.getStatus() + "</font>"));
    }else{
        holder.status.setText(Html.fromHtml("<font color='#ff0000'>" + m.getStatus() + "</font>"));
    }
    holder.thumbnail.setImageUrl(m.getImageUrl(), imageLoader);
}

强烈建议使用Picasso库。在您的项目中添加picasso库,然后编写类似这样的代码。

Picasso.with(getApplicationContext()).load(m.getImageUrl()).into(imageLoader);

而不是这条线

holder.thumbnail.setImageUrl(m.getImageUrl(), imageLoader)

如果你想更快地加载个人资料图像并占用更少的磁盘空间,我建议你使用Glide over Picasso。格莱德和毕加索在这里进行了比较。此外,我认为这将解决您的重复问题。

要使用Glide,请写下这行

Glide.with(context).load(m.getImageUrl()).into(holder.thumbnail);

而不是这个

holder.thumbnail.setImageUrl(m.getImageUrl(), imageLoader);

不要忘记将compile 'com.github.bumptech.glide:glide:3.7.0'添加到您的构建中。gradle

最新更新