android 多次调用getview的position=0

做项目的碰到这么一个问题:自己定义的GridView的adapter在刷新数据,即调用getView方法时,除了调用正常次数(图中第2条到第8条)的getView,还会多调用1次getView方法(图中的第1条)。

原因在于GridView的item的layout中android:layout_height定义为wrap_content , 绘制item高度时系统并不知道item应该绘制多高,它会先取一条来试探以确定item绘制的具体高度,这样就导致多调用了一次getView方法。在滑动、长按等GridView需要重绘的情况下,getView的调用次数可能会不止多一次。

如果项目对position敏感,可以设置item的layout_height为固定高度值 或 用下列方式过滤掉这一次额外调用的getView方法:


1

2

3

4

5

if(position
== parent.getChildCount()){

  //正常调用

}else{

  //系统为计算item高度额外调用

}

另外,listview的情况也类似。

时间: 2024-10-03 12:16:31

android 多次调用getview的position=0的相关文章

getview()-android getView中 position=0多次出现的解决办法

问题描述 android getView中 position=0多次出现的解决办法 适配器中的getview @Override public View getView(int position, View convertView, ViewGroup parent) { View view = View.inflate(context,R.layout.home_item,null); TextView tv = (TextView) view.findViewById(R.id.homeIt

编码-android listview反复调用getview()

问题描述 android listview反复调用getview() 哪位大神帮忙看看,只要一滑动listview就会调用调用getView,我的listview和父view都是fill_parent啊 求帮忙! <?xml version="1.0" encoding="utf-8"?> android:layout_width="fill_parent" android:layout_height="fill_paren

android listview 连续调用 getview调用getivew方法多次解决办法

此问题的讨论: http://bbs.csdn.net/topics/370257541 当我们在使用listview的时候.有时候自定义adapter的时候,是不是会发现在getview里打印日志的时候,重复调用很多次?有时候4次.有的严重甚至到10次,当我们在listview中移动的时候.每移动一列都会调用很多次,这样大大影响到效率!其实这和listview本身在android上的机制有关.下面我开始来介绍一下吧:       在布局,我们只有一个listview的时候.那好.我们把高设置成

Android ListView反复调用getView和getCount

  最近做项目发现一个界面当有ListView是,getView和getCount中的log被疯狂调用.一个5个Item的ListView,getView竟然会被反复调用7组.尤其是当ItemView中需要加载图片时,很容易造成GC过多,很容易出现ANR. 原因就在于measure过程,ListView一般都会有好多个Item,而且也会同时显示若干组Item,这些Item的父元素都是这个ListView. 更具Google的解释,View在Draw的时候分成两个阶段:measure和layout

【Android】ListView中getView的原理与解决多轮重复调用的方法

ListView中getView的工作原理: [1]ListView asks adapter "give me a view" (getView) for each item of the list.(通过getView来获取每个item) [2]A new View is returned and displayed(获取到后返回显示) 那么如果我们有大量的数据需要显示的时候,每个Item都去重复执行getView中的创建新的View的动作吗?这样做会耗费大量的资源去执行重复的事情

srcollview-listview外面套了一个横向滑动的Srcoll,导致getView中position多次为0

问题描述 listview外面套了一个横向滑动的Srcoll,导致getView中position多次为0 listview外面套了一个横向滑动的Srcoll,导致getView中position进去的时候为0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 ... public View getView(int position, View convertView, ViewGroup parent) { Log.e("position",position+"&

GridView重复调用getView有关问题

使用GridView控件,却发现getView被重复调用,次数多达上百次,拖垮了系统,影响用户体验! public View getView(int position, View convertView, ViewGroup parent) { Log.v(Tag, "<getView> position = " + position); ... return convertView; } log信息: 10-12 10:43:09.880: V/GridViewAdapt

getview方法不执行- android listview自定义adapter,getview方法不显示

问题描述 android listview自定义adapter,getview方法不显示 adapter的getCount值不为0,但是不执行getview方法,在ErrorLog中打印出来的log在下面贴出来了,希望路过的大牛们帮忙看看 解决方案 问题找到了,是我的listView的布局控件不正确,已经改好了 解决方案二: android listView 重写Adapter方法getView的性能优化问题 解决方案三: 空指针异常,找找在哪个位置. 解决方案四: log和问的错没什么关系 解

[Android]在Adapter的getView方法中绑定OnClickListener比较好的方法

以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4146512.html    给ListView中每个item绑定点击事件的方法,比较常见的如下这种方式: 1 public View getView(int positon, View convertView, ViewGroup parent){ 2 if(null == convertView){ 3 convertView = LayoutInflate