开源Imageloaderlibary异步记载图片出现重复

卓礼敏 2014-12-10 09:38:34
最近在做一个项目,使用listView来显示网上的新闻咨询, 列表子项会有图片加载,使用imageLoader来异步加载图片,发现很多列表都是加载相同的照片,求大家帮我看看。
源代码:

private ImageLoader imageLoader = ImageLoader.getInstance(); // 获取实例

// 配置
// 图片加载器初始化
imageLoader.init(ImageLoaderConfiguration.createDefault(mContext));
imageLoader.init(new ImageLoaderConfiguration.Builder(mContext.getApplicationContext()).build());
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.images)
// 设置下载期间显示的照片
.showImageForEmptyUri(R.drawable.umeng_socialize_yixin_circle)
// 设置图片Uri为空或是失败的时候显示照片
.showImageOnFail(R.drawable.umeng_socialize_yixin_circle)
// 设置图片加载或解码过程中发生错误显示的照片
.cacheInMemory(true)
// 设置下载的图片是否缓存
.cacheOnDisc(true)
// 设置下载的图片是否存在
.resetViewBeforeLoading(true)
.displayer(new RoundedBitmapDisplayer(20)) // 设置成圆角图片
.build();

3. public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.could_new_item, null);

holder = new ViewHolder();
holder.title = (TextView) convertView
.findViewById(R.id.MainTile);
holder.summary = (TextView) convertView
.findViewById(R.id.Summary);
holder.img = (ImageView) convertView
.findViewById(R.id.new_item_image);
// 给convertview 添加一个额外的数据
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag(); // 通过getTag的方式将数据取出来
}
New_Info info = mNews_list.get(position);
if (info != null) {
holder.title.setText(info.getMainTitle());
holder.summary.setText(info.getmSumrrary());
Log.i(Tag,
" positon=" + position + " link = " + info.getImgLink());

if (info.getImgLink() != null) {
// 异步加载照片
imageLoader.displayImage(info.getImgLink(), holder.img,
options);
} else {
holder.img.setVisibility(View.VISIBLE);
}
}
return convertView;
}

4. 以下是效果图:

...全文
247 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Programer_Zjw 2016-09-20
  • 打赏
  • 举报
回复
碰到类似问题,求解决方案!
weidong_588518 2015-11-10
  • 打赏
  • 举报
回复
这个我也遇到了,请问怎么解决啊
卓礼敏 2014-12-10
  • 打赏
  • 举报
回复
问题解决了, 只要把这句话注释掉就行了/if (convertView == null) { //}; 这里也遇到一个问题,如果我还想用重用机制该怎么实现呢
卓礼敏 2014-12-10
  • 打赏
  • 举报
回复
上传不到照片。

if (info.getImgLink() != null) {
// 异步加载照片
imageLoader.displayImage(info.getImgLink(), holder.img,
options);
} else {
holder.img.setVisibility(View.VISIBLE);
}
这段的逻辑当前有图片链接就使用ImageLoader来异步加载图片,如果不存在链接就显示默认的图片,上面的ImageLoader的配置有, 当前下载失败或者为空显示的照片
荔枝别闹了 2014-12-10
  • 打赏
  • 举报
回复
if (info.getImgLink() != null) {
// 异步加载照片
imageLoader.displayImage(info.getImgLink(), holder.img,
options);
} else {
holder.img.setVisibility(View.VISIBLE);
}
不为空了,为什么还要显示出来,这里的逻辑是啥?没看懂
Lang_JK 2014-12-10
  • 打赏
  • 举报
回复
看不到效果图,重新贴一下。
「已注销」 2014-12-10
  • 打赏
  • 举报
回复
这个好像是listView 的重用机制造成的,楼主可以吧这个暂时去掉: //if (convertView == null) { //}

80,492

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧