skd*_*134 11 android android-recyclerview
我正在创建一个应用程序,用于从卡上加载互联网图像.我正在使用Recyclerview进行上市.为了下载图像,我尝试了Picasso,通用图像下载和其他自定义方法,但我遇到了这个问题:
每当我向下滚动时,imageview中的图像都会重新加载.我甚至保留了一个条件来检查imageview是否包含图像,但是它似乎也不起作用或者我的代码可能有问题.但我无法找到解决这个问题的方法.下面我附上了我的代码的'onBindViewHolder'函数,我认为这是一个有问题的部分.这里的图像是一个包含图像网址的字符串arraylist.
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.default_card, parent, false);
ViewHolder viewHolder;
viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String url = images.get(position);
if (holder.imgView.getDrawable() != null) {
//Do Nothing
} else {
ImageLoader.getInstance().displayImage(url, holder.imgView);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以.fit()与毕加索一起使用。希望能解决你的问题
Picasso.with(persons.get(i).context)
.load(persons.get(i).photoId)
.placeholder(R.drawable.placeholder)
.fit()
.into(personPhoto);
Run Code Online (Sandbox Code Playgroud)
首先,您的代码中有一个错误 - 您必须从 中删除该条件onBindViewHolder。所有ImageView实例每次显示时都必须更新。
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
String url = images.get(position);
ImageLoader.getInstance().displayImage(url, holder.imgView);
}
Run Code Online (Sandbox Code Playgroud)
重载部分:
问题是,您可能没有使用任何缓存(内存中的或基于磁盘的)。我不会详细说明这一点,在集合视图中缓存图像是一个非常常见的问题,我确信快速的 StackOverflow 搜索会给您带来很多结果。
特别要指出的是 - 通用图像默认情况下没有启用缓存,您可以通过这种方式打开它。
DisplayImageOptions options = new DisplayImageOptions.Builder()
...
.cacheInMemory(true)
.cacheOnDisk(true)
...
.build();
ImageLoader.getInstance().displayImage(imageUrl, imageView, options); // Incoming options will be used
Run Code Online (Sandbox Code Playgroud)
或者您可以为您的应用程序进行全局设置,只需查看文档即可。
| 归档时间: |
|
| 查看次数: |
6676 次 |
| 最近记录: |