【发布时间】:2015-12-24 09:11:38
【问题描述】:
我在ListView 项目中使用了SimpleDraweeView。如果header url不为null,则显示来自网络的图片,或者显示来自本地drawable的默认图片。
代码如下:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.info_contact_item,null);
holder.ivHeader = findViewById(convertView, R.id.iv_header);
holder.setTag(holder);
} else {
holder = (BaseViewHolder) convertView.getTag();
}
final String url = data.get(position).get("headerUrl");
if (StringUtil.isNull(url)){
holder .ivHeader.setBackgroundResource(R.drawable.default_head_icon);
}else{
ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.parse(uri))
.setAutoRotateEnabled(true)
.setLocalThumbnailPreviewsEnabled(true) //
.setProgressiveRenderingEnabled(true) //
.build();
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setImageRequest(imageRequest)
.setOldController(simpleDraweeView.getController())
.setAutoPlayAnimations(true)
.build();
holder.ivHeader.setController(controller);
}
return convertView;
}
当我将ListView 滚动到最后时,SimpleDraweeView 显示与最后一个屏幕图像数据相同的图像。有人有同样的问题吗?
【问题讨论】:
-
the last screen image data是什么? -
屏幕上会显示六个项目,当我将listview滚动到下六个项目时,第7个项目的simpledraweeview会显示第一个图像数据。
-
请在您的适配器中发布完整的源代码。你应该写一个日志来检查第 7 项是否加载了正确的 url。第 7 项是否加载了与第 1 个图像数据相同的 url
-
我查看了日志,url是正确的。第 7 项 url 为空,第 1 项是正确的 url
-
我不确定,因为我从不使用 if (StringUtil.isNull(url))。你能用 if (url == null){ 替换它吗
标签: android listview android-listview fresco