Android Adapter 异步图片请求诡异问题
2015-08-01 02:04
375 查看
在开发的时候,在Android Adapter中请求图片。
但是在执行下面代码的时候,总会出现图片请求多次,而且出现position=0的imageView显示的图片与真正的图片有时候不同。
现象非常诡异。
最终原因是ListView 的layout高度属性是wrap_content. 将他该为match_parent问题就解决了。
原因是每次请求完的时候Listview都会重新调整大小去容纳真实的item的尺寸。这样会导致一些item会重新刷新。重新刷新的时候会再次触发请求。
参考解释:
http://stackoverflow.com/questions/11186004/yet-another-getview-called-multiple-times
但是在执行下面代码的时候,总会出现图片请求多次,而且出现position=0的imageView显示的图片与真正的图片有时候不同。
现象非常诡异。
@Override public View getView(final int position, View convertView, ViewGroup parent) { AdapterViewHolder holder = null; if (convertView == null) { holder = new AdapterViewHolder(); convertView = mInflater.inflate(R.layout.group_notification_item, null); holder.tvDescription = (TextView) convertView.findViewById(R.id.tv_group_description); holder.tvName = (TextView) convertView.findViewById(R.id.tv_group_name); holder.ivHeadImage = (ImageView) convertView.findViewById(R.id.iv_headimage); holder.btnAccept = (Button) convertView.findViewById(R.id.accept_btn); holder.btnDeny = (Button) convertView.findViewById(R.id.deny_btn); holder.tvTip = (TextView)convertView.findViewById(R.id.tip_text_tv); convertView.setTag(holder); } else { holder = (AdapterViewHolder) convertView.getTag(); } holder.tvDescription.setText(requester.getMessage()); holder.tvName.setText(requester.getRequesterName()); String imageUrl = requester.getHeadImage(); if (imageUrl != null && !imageUrl.trim().isEmpty()) { new ImageDownloader(mContext, holder.ivHeadImage).executeOnExecutor(DataRequester.execPool, imageUrl);//异步请求图片 } return convertView; } class AdapterViewHolder { TextView tvDescription; TextView tvName; ImageView ivHeadImage; Button btnAccept; Button btnDeny; TextView tvTip; }
最终原因是ListView 的layout高度属性是wrap_content. 将他该为match_parent问题就解决了。
<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ListView android:id="@+id/groups_list" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView> </RelativeLayout>
原因是每次请求完的时候Listview都会重新调整大小去容纳真实的item的尺寸。这样会导致一些item会重新刷新。重新刷新的时候会再次触发请求。
参考解释:
http://stackoverflow.com/questions/11186004/yet-another-getview-called-multiple-times
相关文章推荐
- Android配置opencv开发环境并运行face-detection 人脸检测例程
- Android NDK的入门程序 FATAL EXCEPTION
- 【攻克Android (13)】Menu 菜单
- Android IntentService完全解析
- Android Studio 下混淆 文件配置 问题 初探(一)
- android之sqlite简单使用
- android-样式(style)和主题(theme)
- Android ListView滑动过程中图片显示重复错位闪烁问题解决
- Android:控件属性
- 【Android】PhoneMonitor 手机监控器
- Android开发记录20-获取缓存大小和清除缓存功能
- Android学习笔记之Intent
- Android 开发新特性
- android 开源框架xUtils
- Android如何让软键盘出现和消失
- 用手机调试Android手机连上没反应解决办法
- Forms Android Contacts
- Forms Android SMS
- 如何在Android Gradle中添加原生so文件依赖
- Forms Android System Download