android 多次调用getview的position=0
2014-04-23 22:52
106 查看
scrollview里面嵌套gridview,gridview的高度未知。
适配器会出现 getview()的position==0多调用一次。
![](http://img.blog.csdn.net/20140423225346000?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdnVydG5lX3ll/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
如上的bug。
原因在于:在于GridView的item的layout中android:layout_height定义为wrap_content , 绘制item高度时系统并不知道item应该绘制多高,它会先取一条来试探以确定item绘制的具体高度,这样就导致多调用了一次getView方法。在滑动、长按等GridView需要重绘的情况下,getView的调用次数可能会不止多一次。多调用的==0那一次会把最后一个item的view传递进来,而这个时候position==0,所以就会看到最好一个和第一个一样的图片。
解决:添加下面红色,忽略临时那一条。
修改后的效果:
适配器会出现 getview()的position==0多调用一次。
如上的bug。
原因在于:在于GridView的item的layout中android:layout_height定义为wrap_content , 绘制item高度时系统并不知道item应该绘制多高,它会先取一条来试探以确定item绘制的具体高度,这样就导致多调用了一次getView方法。在滑动、长按等GridView需要重绘的情况下,getView的调用次数可能会不止多一次。多调用的==0那一次会把最后一个item的view传递进来,而这个时候position==0,所以就会看到最好一个和第一个一样的图片。
解决:添加下面红色,忽略临时那一条。
@Override public 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; }
修改后的效果:
相关文章推荐
- android 多次调用getview的position=0
- Android ListView等getView调用多次问题
- Android中ListView多次调用getView
- Android listview&gridview getview 方法多次调用问题解决方法
- android Adapter 多次调用getview的position=0 position总是0
- android ListView 在初始化时多次调用getView()原因分析
- Android中listview getview被多次调用
- android: BaseAdapter的getview方法会多次重复调用
- Android ListView 第一次设置Adapter时候getView调用多次
- Android ListView 第一次设置Adapter时候getView调用多次
- android之ListView多次调用getView解决办法
- Android 解决ListView、GridView在首次显示时adapter可能多次调用getView的问题
- android listview 连续调用 getview多次问题分析及解决
- Android ListView优化之getView频繁多次调用与ViewHolder工作原理
- android ListView 多次调用 getView方法
- Android ListView的getView()会出现多次position=0的情况
- android:ListView滑动时图片重复加载,多次调用了GetView().
- Android listview&gridview getview 方法多次调用问题解决方法--->导致gridview错位
- Android中listview getview被多次调用
- android之关于getview 多次调用出现的错位现象