listview baseadpater getview 方法何时调用

本文探讨了在Android中ListView的使用,详细解释了如何在适配器的BaseAdapter方法中实现数据绑定,并通过合理设置ListView的高度来优化性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘自网上

页面刷新。更新数据,notifydatabasechange()都会调用getview () 方法

 

 

1、

getView执行的次数和你的getCount没有直接的关系   ,getCount和你listView里面的条目数量(行数量)有关系 ,getView方法执行次数取决于你屏幕上显示几个条目,比如你有100行  ,但是你一屏只能显示5行,那么启动程序的时候 系统调用5次getView方法,当你把listView往下拉的时候会显示出其他未显示的行,这样系统就会调用getView方法,每显示一个新的行就调用一次getView,所以你要是不停的上下滑动listVew那getView理论上是可以调用任意次数的

2、

 在Android中,我们常常会遇到这种情况:在ListView中显示图片,而图片的显示我们一般是放在与ListView绑定了的适配器BaseAdapter方法getView中,如下面所示:

class MyAdapter extends BaseAdapter{

    private Context mContext;

     private int mSize;

    public MyAdapter(Context mContext, int mSize){

         this.mContext = context;

         this.mSize = mSize;

    }

     public int getCount() {

           // TODO Auto-generated method stub

           return mSize;

     }

     public Object getItem(int arg0) {

      // TODO Auto-generated method stub

          return arg0;

     }

     public long getItemId(int position) {

          // TODO Auto-generated method stub

          return position;

     }
     public View getView(int position, View convertView,

          ViewGroup parent) {

          // TODO Auto-generated method stub

          system.out.println("getView was called");

        //显示图片

     }

}

    在上面的例子中,一个Activity刚生成,假如ListView有N多个子项,使得界面拥有了滚动条,那么控制台首先会打印N次“getView was called”。

当我们试图用鼠标拖动滚动条时,如果ListView的布局是:

     android:layout_width="fill_parent"

     android:layout_height="wrap_content"

那么控制台会继续打印“getView was called”,表明getView方法继续被执行。

如果ListView的布局是:

     android:layout_width="fill_parent"

     android:layout_height="fill_parent"

那么控制台不再打印“getView was called”,即不再调用getView

 

因此,我们在使用ListView时,尽量想办法固定ListView的高度,增加程序运行效率。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值