关于android gridview中getview方法的疑问

问题描述

我的gridview配置如下:<GridViewandroid:id="@+id/gridApps"android:paddingLeft="20.0dip"android:paddingTop="10.0dip"android:paddingRight="20.0dip"android:paddingBottom="10.0dip"android:layout_width="fill_parent"android:layout_height="fill_parent"android:horizontalSpacing="20.0dip"android:verticalSpacing="25dip"android:numColumns="auto_fit"android:layout_weight="1.0"android:alwaysDrawnWithCache="false"></GridView>android端,引用的adapter中的getview方法的代码如下:@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHorder horder; TestClass.println("position",String.valueOf(position)); //主要看这里,等下的打印信息可以看到 if (convertView == null) { horder = new ViewHorder(); convertView = LayoutInflater.from(context) .inflate(R.layout.application_layout, null); horder.app_icon = (ImageView) convertView.findViewById(R.id.app_icon); horder.app_title = (TextView)convertView.findViewById(R.id.app_title); convertView.setTag(horder); }else{ horder = (ViewHorder)convertView.getTag(); } ResolveInfo res = resInfo.get(position); horder.app_icon .setImageDrawable(res.loadIcon(packageManager)); horder.app_title .setText(res.loadLabel(packageManager).toString()); return convertView; } logcat打印代码如下:05-09 02:33:00.978: INFO/zkli(8504): =====position====0====05-09 02:33:01.013: INFO/zkli(8504): =====position====0====05-09 02:33:01.023: INFO/zkli(8504): =====position====0====05-09 02:33:01.033: INFO/zkli(8504): =====position====1====05-09 02:33:01.043: INFO/zkli(8504): =====position====2====05-09 02:33:01.053: INFO/zkli(8504): =====position====3====05-09 02:33:01.063: INFO/zkli(8504): =====position====4====05-09 02:33:01.073: INFO/zkli(8504): =====position====5====05-09 02:33:01.083: INFO/zkli(8504): =====position====6====05-09 02:33:01.093: INFO/zkli(8504): =====position====7====05-09 02:33:01.103: INFO/zkli(8504): =====position====8====05-09 02:33:01.113: INFO/zkli(8504): =====position====9====05-09 02:33:01.123: INFO/zkli(8504): =====position====10====05-09 02:33:01.128: INFO/zkli(8504): =====position====11====05-09 02:33:01.138: INFO/zkli(8504): =====position====12====05-09 02:33:01.163: INFO/zkli(8504): =====position====13====05-09 02:33:01.178: INFO/zkli(8504): =====position====14====05-09 02:33:01.193: INFO/zkli(8504): =====position====15====05-09 02:33:01.203: INFO/zkli(8504): =====position====16====05-09 02:33:01.213: INFO/zkli(8504): =====position====17====05-09 02:33:01.223: INFO/zkli(8504): =====position====18====05-09 02:33:01.228: INFO/zkli(8504): =====position====19====05-09 02:33:01.238: INFO/zkli(8504): =====position====20====05-09 02:33:01.248: INFO/zkli(8504): =====position====21====05-09 02:33:01.253: INFO/zkli(8504): =====position====22====05-09 02:33:01.268: INFO/zkli(8504): =====position====23====05-09 02:33:01.273: INFO/zkli(8504): =====position====24====05-09 02:33:01.283: INFO/zkli(8504): =====position====25====05-09 02:33:01.293: INFO/zkli(8504): =====position====26====05-09 02:33:01.303: INFO/zkli(8504): =====position====27====为什么第一次进入列表的时候会打印3此值为0,就是说运行了3次值为0 ,对结果会造成什么影响

解决方案

这是正常的,这是一种延迟加载优化技术getView()方法会根据屏幕可能显示的item数目进行调用,如果你有30个item,那么GridView在第一次加载的时候会创建15个item,每当你滚动GridView的时候,会触发getview去创建将要滚动到的item,而刚才生成的一些item会滚动到不见的区域就会被释放掉,也就是说getView()方法调用次数是不确定的。
解决方案二:
会不会父view初始化时也调用了这个方法,我猜的。

时间: 2024-07-30 12:20:41

关于android gridview中getview方法的疑问的相关文章

Android: Gallery的adapter中getView方法被执行多次

项目中遇到一个奇怪的问题:为Gallery设置的adapter中的getView方法被调用多次 客户需求:一次只能滑动一格 参考资料: http://stackoverflow.com/questions/4687370/gallery-scroll-one-image-at-a-time http://stackoverflow.com/questions/6058609/android-gallerys-getview-returning-incorrect-position Android

Android GridView中包含EditText的焦点重新获取方法_Android

本文实例讲述了Android GridView中包含EditText的焦点重新获取方法.分享给大家供大家参考,具体如下: 项目中遇到的问题是当界面有刷新时,EditText失去焦点,这时候需要重新获取焦点. EditText editText = (EditText) mGridView.findViewById(R.id.gridview_edittext_item); //gridview_edittext_item 是放在对应的adapter的xml文件中的 if (editText !=

Android GridView中包含EditText的焦点重新获取方法

本文实例讲述了Android GridView中包含EditText的焦点重新获取方法.分享给大家供大家参考,具体如下: 项目中遇到的问题是当界面有刷新时,EditText失去焦点,这时候需要重新获取焦点. EditText editText = (EditText) mGridView.findViewById(R.id.gridview_edittext_item); //gridview_edittext_item 是放在对应的adapter的xml文件中的 if (editText !=

collections-Java问题:Collections类中copy方法的疑问,求解答

问题描述 Java问题:Collections类中copy方法的疑问,求解答 解决方案 copy方法,第二个参数的list长度要小于第一个参数的list长度. 也就是copy方式是把第二个参数中的list值放到第一个参数的list中,从0开始

android开发-Android VideoView中getDuration()方法使用问题

问题描述 Android VideoView中getDuration()方法使用问题 Android VideoView中getDuration()方法使用问题: 调用videoView.getDuration()方法返回值为-1 VideoView.start()后调用videoView.getDuration()方法返回值也为-1, 视频开始播放后调用videoView.getDuration()方法返回值为视频的真实"长度", 有什么办法在播放前就可以获取视频的真实"长

unity3d-关于unity中destroy方法的疑问

问题描述 关于unity中destroy方法的疑问 一个gameObject被destroy,如何判断操作已经完成? 我试过gameObject == null 也试过 !gameObject 都不行是我的方法错了吗. destroy删除后的游戏对象的内存是否被完全释放了,如果没有,我们如何进行清理工作? 解决方案 如果你不确定gameObject = null赋值 就可以避免了 解决方案二: Destroy(gameobject):之后,你的gameobject==null的结果就为true,

浅析Android Dialog中setContentView()方法

概述 Dialog在Android中是一个很优秀的工具.在使用Dialog时,我们一般都会自定义要显示的内容布局.Dialog自带了三个方法来支持自定义内容布局. public void setContentView (int layoutResID); public void setContentView (View view); public void setContentView (View view, ViewGroup.LayoutParams params); 这三个方法内部的实现原

Android应用中clearFocus方法调用无效的问题解决_Android

clearFocus 无效? EditText在focus与非focus的时候,显示效果是不同的:focus的时候光标是闪的,而且我们通常也会给它设置selector,focus的时候给它加上边框之类的. 通常当我们触摸EditText之外的View时,需要清除EditText的焦点.很自然的就会想到EditText.clearFocus(),然而常常并没有用.(EditText.isFocus()依然是true,光标也依然在跳跃...) clearFocus的实现 clearFocus的调用栈

Android应用中clearFocus方法调用无效的问题解决

clearFocus 无效? EditText在focus与非focus的时候,显示效果是不同的:focus的时候光标是闪的,而且我们通常也会给它设置selector,focus的时候给它加上边框之类的. 通常当我们触摸EditText之外的View时,需要清除EditText的焦点.很自然的就会想到EditText.clearFocus(),然而常常并没有用.(EditText.isFocus()依然是true,光标也依然在跳跃...) clearFocus的实现 clearFocus的调用栈