我目前正在创建一个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