关于custom adapter 中调用getview()次数的问题

1. 影响getview()调用因素一般是ListView中layout_height的设置,如果将其属性设置为"wrap_content"。那么问题就来了,getview调用的次数会多增加几次。

2.  那么getview调用多增加的次数是跟当前屏幕能够显示的view条数决定的,每页的view条数越多其调用的次数就会多增加,反之就会少增加。

3. getView()调用多增加跟list的size是无关的。

4. 总之,为了提高效率减少getView()的调用次数最好将ListView中的layout_height属性设置为"fill_parent"或者"match_parent"

时间: 2024-12-28 16:45:36

关于custom adapter 中调用getview()次数的问题的相关文章

自定义Adapter中实现startActivityForResult的分析

最近几天在做文件上传的时候,想在自定义Adapter中启动activity时也返回Intent数据,于是想到了用startActivityForResult,可是用mContext怎么也调不出这个方法,只能调用startActivity这个方法,于是在网上搜一下,可以利用一个方式可以间接的解决这个问题,果断贴代码: Intent mIntent = new Intent(mContext,clazz);((Activity) mContext).startActivityForResult(mI

ListView的adapter中getView方法一直调用

当ListView的高度不定(例如重写ListView搞成可自动的扩展的ListView)或 ListView嵌套在SrollView(高度不定)中,listView中的一个item元素改变会使得全部item都调用getView()的方法. 这种 ok 一定要用LinearLayout套ListView(具体原因还不太清楚) <ScrollView android:layout_width="match_parent" android:layout_height="40

Android中的自定义Adapter(继承自BaseAdapter)——与系统Adapter的调用方法一致——含ViewHolder显示效率的优化(转)

Android中很多地方使用的是适配器(Adapter)机制,那我们就要好好把这个Adapter利用起来,并且用出自己的特色,来符合我们自行设计的需要喽~~~ 下面先上一个例子,是使用ViewHolder进行显示效率优化过的工程: package com.test.listviewsimpleadapter;    import java.util.ArrayList;  import java.util.HashMap;  import java.util.List;  import java

自定义Adapter为什么会重复多轮调用getView?——原来是ListView.onMeasure在作祟

相信很多人在使用自定义Adapter的时候都遇到这样的问题: 假设Adapter数据源中只有30个Item,理论上每显示一个新的Item的时候就会调用一次getView,均显示一次的话是要调用getView() 30次的,然而当我们在getView输出Log信息时,前几个会被重复多轮调用,之后每滑动到一个新的Item便会正常调用getView? 针对这个问题,网上很多帖子指明这与ListView的Item的高度计算方法有关,并强调解决该问题的办法是在XML文件里面定义listView的时候需要设

关于ArrayAdapter中的getView函数

我曾想利用ArrayAdapter中的getView来获取ListView中每个item的View对象.结果是,无论我怎么对View对象进行更改都不产生影响.不会变是理所当然的,因为getView,其实是"createView".下面是我参考的源代码:  public View getView(int position, View convertView, ViewGroup parent) {         return createViewFromResource(positio

BaseAdapter中重写getview的心得以及发现convertView回收的机制

转载自:http://blog.csdn.net/pkxiuluo01/article/details/7380974 以前一直在用BaseAdapter,对于其中的getview方法的重写一直不太清楚.今天终于得以有空来探究它的详细机制. 下面先讲讲我遇到的几个问题: 一.View getview(int position, View convertview, ViewGroup parent )中的第二个参数是什么含义: 二.View的SetTag和getTag方法的用途: 先来解决第一个问

何时调用getView?——从源码的角度给出解答

先来看ListView类中的makeAndAddView方法: 1 /** 2 * 获取视图填充到列表的item中去,视图可以是从未使用过的视图转换过来,也可以是从回收站复用的视图. 3 * 在该方法中,先查找是否有可重用视图,如果有,使用可重用视图. 4 * 然后通过obtainView方法获取一个view(有可能是从未使用视图转换过来 5 * (obtainView方法是在AbsListView方法中定义)),再重新测量和定位View. 6 * Obtain the view and add

在Adapter中使用Holder的那些坑

??在使用GridView.ListView时,通常会在Adapter中采用Holder缓存每一项以提高效率,但如果没有用好Holder,这个缓存机制会导致许多意想不到的问题,结合自己的经验特地总结一下,以免今后再犯. 内容错乱 ??在Adapter的getView方法中通过position更新每一项的内容,对于根据判断条件给每一项设置属性的情况,每个判断条件下都需要给每一项的每个属性赋值,否则在滑动ListView或GridView时会导致内容错乱,比如下面这段代码是在getView中调用的一

数字在排序数组中出现的次数

题目:统计一个数字在排序数组中出现的次数.例如输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4. 程序实现: import java.util.Scanner; public class Test38 { public static void main(String[] args) { /**  * 初始化数组,测试数据可以多种途径初始化  */   Scanner in = new Scanner(System.in); /*int[] a =