GridView、ListView数据更新图片闪烁问题
来源:互联网 发布:adsafe mac版 编辑:程序博客网 时间:2024/06/08 02:07
新功能是选择图片上传,选择完图片在上传前可以对已选择的图片进行删除。删除图片后,调用notifyDataSetChanged 通知UI数据更改。
是用Imageloader展示图片。
因为执行notifyDataSetChanged 后,GridView、ListView重新执行了getView 方法,getView 图片又重新加载。所以会出现图片会有闪烁。
解决方法是给图片setTag ,在getview里面,判断要加载的图片的tag是否相同。
修改之前:
@Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { convertView = LayoutInflater.from(context) .inflate(R.layout.item_car_image_upload, parent, false); holder = new ViewHolder(); holder.image = (ImageView) convertView .findViewById(R.id.item_grida_image); holder.delete= (ImageView) convertView .findViewById(R.id.delete_icon_image); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } //notifyDataSetChanged后,执行getView,会重新加载闪烁 ImageLoader.getInstance().displayImage( imageInfoList.get(position).toString(), holder.image); return convertView; }
修改之后
@Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { .inflate(R.layout.item_car_image_upload, parent, false); holder = new ViewHolder(); holder.image = (ImageView) convertView .findViewById(R.id.item_grida_image); holder.delete= (ImageView) convertView .findViewById(R.id.delete_icon_image); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } //判断tag,决定是否重新加载 if (imageInfoList.get(position).toString() .equals(holder.image.getTag())) { } else { //加载图片 ImageLoader.getInstance().displayImage( imageInfoList.get(position).toString(),holder.image); //使用图片的资源地址url或者本地地址作为tag holder.image.setTag(imageInfoList.get(position).toString()); } return convertView; }
作为viewholder的tag的内容,其实不一定要是图片的url,之前因为图片重复,url可能重复,使用数据源里面的id作为tag更准确一些。
类似于这样,使用Car_id作为tag,决定数据是否需要加载
if ((viewHolder.image_app_small.getTag()!=null&&overseaCarInfos.get(position)!=null&& overseaCarInfos.get(position).getCar_id()!=null&&overseaCarInfos.get(position).getCar_id().equals(viewHolder.image_app_small.getTag()) )) { } else { // 如果不相同,就加载。现在在这里来改变闪烁的情况 ImageLoader.getInstance().displayImage(overseaCarInfos.get(position).getImage_url_app_small(), viewHolder.image_app_small); viewHolder.image_app_small.setTag(overseaCarInfos.get(position).getCar_id()); viewHolder.car_price.setText(overseaCarInfos.get(position).getPrice()); viewHolder.overease_car_name.setText(overseaCarInfos.get(position).getName_cn()); }
阅读全文
0 0
- GridView、ListView数据更新图片闪烁问题
- 解决listview更新数据时,屏幕闪烁的问题
- ListView之图片闪烁问题
- ListView 闪烁 图片错位问题
- ListView刷新,图片闪烁问题
- Imageloader, listview.notifyDataSetChanged刷新问题,图片闪烁
- ListView加载实时数据闪烁的问题
- 两个ListView 嵌套数据出现错位,混淆的,图片闪烁问题
- 解决Listview控件中的数据实时更新产生闪烁!
- C#使用ListView更新数据出现闪烁解决办法
- 使用ListView更新数据一直闪烁的解决办法
- 使用ListView更新数据一直闪烁的解决办法
- listview、gridview单项更新及滑动时数据错乱重复问题
- Android在ListView显示图片(重复错乱闪烁问题)
- 解决ListView下拉刷新时导致图片闪烁问题
- ListView复用导致图片错乱及闪烁问题
- listview中网络请求图片 用Imageloader加载闪烁问题
- Android ListView 数据更新问题
- Book Club 二分图最大匹配
- 蓝图通信二
- 杂谈:好人应该如何收取服务费用?
- SpringBoot + Mybatis + RESTful(Jersey)
- 交换两个数的值
- GridView、ListView数据更新图片闪烁问题
- pythonWeb -- Django开发-视图层开发和URL配置
- 2017.7.24 未做完的题目
- Java开发必会的Linux命令
- Python文件复制,备份,搜索
- 机器学习update操作总结
- JS、html、css注释方式及作用
- poj 1002 487-3279之map解法
- Codis源码解析——dashboard的启动(2)