scrollview里面嵌套gridview,gridview的高度未知。

适配器会出现 getview()的position==0多调用一次。






如上的bug。


原因在于:在于GridView的item的layout中android:layout_height定义为wrap_content , 绘制item高度时系统并不知道item应该绘制多高,它会先取一条来试探以确定item绘制的具体高度,这样就导致多调用了一次getView方法。在滑动、长按等GridView需要重绘的情况下,getView的调用次数可能会不止多一次。多调用的==0那一次会把最后一个item的view传递进来,而这个时候position==0,所以就会看到最好一个和第一个一样的图片。


解决:添加下面红色,忽略临时那一条。

@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if(null == convertView){ImageView img = new ImageView(getActivity());AbsListView.LayoutParams lp = new AbsListView.LayoutParams(93, 93);img.setLayoutParams(lp);img.setScaleType(ScaleType.CENTER_CROP);convertView = img;}/** * 解决bug:多次调用position==0问题,导致 +图标 显示为第一个图标。 * 原因:原因在于GridView的item的layout中android:layout_height定义为wrap_content  * , 绘制item高度时系统并不知 道item应该绘制多高,它会先取一条来试探以确定item绘制的具体高度,这样就导致多 * 调用了一次getView方法。在滑动、长按等GridView需要重绘的情况下,getView的调用次数可能会不止多一次。 */if(position != parent.getChildCount()){return convertView;}c_bean_choose_pic data = mArrayListChoosePic.get(position);ImageView img = (ImageView)convertView;if(data.mEnumType == c_bean_choose_pic.enum_pic.pic){mImageLoader.displayImage("file:///"+data.mPicLocalPath, img,options);}else{img.setBackground(null);img.setImageResource(data.res_add_id);}return convertView;}

修改后的效果:



更多相关文章

  1. 【android】图片放错文件夹引起显示大小不同的原因与屏幕适配原
  2. Android(安卓)MediaRecorder视频录制,多分辨率调节
  3. 关于android:background="@drawable/ 出错
  4. 最近reactNative在开发android中遇到的坑
  5. Android人脸识别app——基于Face++,MVP+Retofit+RxJava+Dagger高
  6. 2013.04.10——— android listview getview 多次调用的问题
  7. system 权限程序不能访问sd卡问题
  8. Android-沉浸式布局的玩法
  9. android中ImageView属性及其详解

随机推荐

  1. ■Android中尺寸单位杂谈
  2. Android屏幕适配总结
  3. 手动安装Android(安卓)Platform
  4. android之图片切圆角
  5. Android(安卓)获取内外置存储卡方法
  6. Android(安卓)四种启动模式详解
  7. Android之个性化ListView实现
  8. 详解Android客户端与服务器交互方式
  9. 谈Android下一个apk安装多个程序入口图标
  10. Android(安卓)Junit 单元测试、异步测试