iteye_17793 2011-05-09 10:43
浏览 232
已采纳

关于android gridview中getview方法的疑问

我的gridview配置如下:
[code="xml"]
android: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"
>

[/code]

android端,引用的adapter中的getview方法的代码如下:
[code="java"]
@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;

}

[/code]

logcat打印代码如下:
[code="java"]
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====

[/code]

为什么第一次进入列表的时候会打印3此值为0,就是说运行了3次值为0 ,对结果会造成什么影响

  • 写回答

2条回答 默认 最新

  • iteye_8576 2011-05-09 13:16
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用