public View getView(int position, View convertview, ViewGroup parent):获取每一个Item的显示内容,Android回根据getCount()方法的返回值决定调用getView()方法的次数,每次调用getView()方法都要返回一个view对象,然后将返回的 view对象添加到listview对象中。
listview中item超过一屏会自动添加滚动功能用于浏览,每次滚动都会有新的item出现,“old”item消失。
Android在调用getView时会将要显示的item索引(位置),“old”item对象传给getView()方法。
如果我们每次在getView()方法中都加载R.id.*或new一个新对象,然后设置属性返回,那样实在是太浪费效率太低了;这时候convertview就派上用场了。
先贴代码:
看不懂没关系,执行流程是这样的:
Android首先会执行一个根据getCount()返回值数量的循环,每次都会调用getView()方法,
假如一个屏幕能容下10个item,那么getView()方法执行前十次convertview都为null,因为并没有item”消失“,也即是没有“old”item。判断convertview为null,新建一个view(inflater.inflate(R.layout.item,null)和holder对象,把holder对象属性(view组件)通过findViewById赋值,然后调用view对象的setTag(Object tag)方法将view和holder绑定在一起。
这时候往下滑会有新的item出现,也会有“old”item消失,消失的item会以converview的参数传递给getView()方法,这时候判断convertview不为null,在convertview创建的时候我们用setTag方法传递过holder对象,这时候我们把holder对象取出来,设置holder对象属性(TextView,ImageView,Button)的属性(对象的setText,setSize,,,)。
再把设置新属性的holder的view return回去就可以了。
概况来说就是一个item可以有许多view(button,textview等),我们把一个item中的所有view都保存在一个holder(名字随意)对象中,我们再新旧交替的时候只需要把“old”item中的所有view的属性改变一下在返回就可以了。holder对象只是保存item中所有view的引用,这样不用每次都findViewById。
view的setTag和getTag方法其实很简单,在实际编写代码的时候一个view不仅仅是为了显示一些字符串、图片,有时我们还需要他们携带一些其他的数据以便我们对该view的识别或者其他操作。于是android 的设计者们就创造了setTag(Object)方法来存放一些数据和view绑定,我们可以理解为这个是view 的标签也可以理解为view 作为一个容器存放了一些数据。而这些数据我们也可以通过getTag() 方法来取出来。
listview中item超过一屏会自动添加滚动功能用于浏览,每次滚动都会有新的item出现,“old”item消失。
Android在调用getView时会将要显示的item索引(位置),“old”item对象传给getView()方法。
如果我们每次在getView()方法中都加载R.id.*或new一个新对象,然后设置属性返回,那样实在是太浪费效率太低了;这时候convertview就派上用场了。
先贴代码:
Android首先会执行一个根据getCount()返回值数量的循环,每次都会调用getView()方法,
假如一个屏幕能容下10个item,那么getView()方法执行前十次convertview都为null,因为并没有item”消失“,也即是没有“old”item。判断convertview为null,新建一个view(inflater.inflate(R.layout.item,null)和holder对象,把holder对象属性(view组件)通过findViewById赋值,然后调用view对象的setTag(Object tag)方法将view和holder绑定在一起。
这时候往下滑会有新的item出现,也会有“old”item消失,消失的item会以converview的参数传递给getView()方法,这时候判断convertview不为null,在convertview创建的时候我们用setTag方法传递过holder对象,这时候我们把holder对象取出来,设置holder对象属性(TextView,ImageView,Button)的属性(对象的setText,setSize,,,)。
再把设置新属性的holder的view return回去就可以了。
概况来说就是一个item可以有许多view(button,textview等),我们把一个item中的所有view都保存在一个holder(名字随意)对象中,我们再新旧交替的时候只需要把“old”item中的所有view的属性改变一下在返回就可以了。holder对象只是保存item中所有view的引用,这样不用每次都findViewById。
view的setTag和getTag方法其实很简单,在实际编写代码的时候一个view不仅仅是为了显示一些字符串、图片,有时我们还需要他们携带一些其他的数据以便我们对该view的识别或者其他操作。于是android 的设计者们就创造了setTag(Object)方法来存放一些数据和view绑定,我们可以理解为这个是view 的标签也可以理解为view 作为一个容器存放了一些数据。而这些数据我们也可以通过getTag() 方法来取出来。
评论
发表评论