最近listview结合baseadapter运用较多,对二者也慢慢变得熟悉起来,在这里做一个小小总结。
listview属于典型的适配器控件,适配器控件派生自android.widget.AdapterView,一般由三部分组成,控制视图、数据源、适配器对象。适配器对象的作用就是:构造列表项控件,并将数据项绑定到列表项控件中,baseadapter是一种较为常用且功能强大的适配器,关键在于getView()方法的实现;
@Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub return null; }
在适配器的定制过程中,开发者需要明确列表项的数量,并确定每个列表项对应的数据内容,同时需要为列表项构造列表空间对象,并将对应的列表项数据绑定到列表项控件上。
按照这样的方式构造适配器,当列表项很多事会导致子控件的数量急剧膨胀,耗费大量内存,甚至崩溃。android的适配器控件在设计时在getView函数中有一个输入函数convertView,用于缓存最近一个失去可视状态的列表项空间对象。如下图
convertView就是用于缓存失去可视状态的列表项控件,通过getView函数会传到开发者手里,开发者可以复用这个控件对象重新绑定即将可是的列表项对象数据,从而避免了构造新列表项控件的开销。结合ViewHolder将更加高效(避免重复getViewByid());待续
时间: 2024-10-23 21:22:47