您的位置:首页 > 其它

listview baseadpater getview 方法何时调用

2013-03-29 22:29 176 查看
摘自网上

页面刷新。更新数据,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的高度,增加程序运行效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: