首页 理论教育 Android BaseAdapter 详解及适配优化

Android BaseAdapter 详解及适配优化

时间:2023-06-27 理论教育 版权反馈
【摘要】:图5-3 Android的数据源、适配器、显示控件之间的关系数据适配器正是建立了数据源与ListView之间的适配关系,将数据源转换为ListView能够显示的数据格式,从而将数据的来源与数据的显示进行解耦,降低程序的耦合性。List-View、GridView等数据显示控件有多种数据适配器,本文讲解最通用的数据适配器——BaseAdapter。BaseAdapter是Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到ListView、Spinner、Gallery及GridView等UI显示组件,它继承自接口类Adapter。

Android BaseAdapter 详解及适配优化

在Android应用程序中,采用了数据和显示分开实现的数据处理方式,由于数据源形式多样,例如ListView所展示数据格式是有一定要求的,为了匹配这个变换,中间增加了适配器,如图5-3所示,图中展示了数据源、适配器、ListView等数据显示控件之间的关系。

978-7-111-58810-8-Chapter05-24.jpg

图5-3 Android的数据源、适配器、显示控件之间的关系

数据适配器正是建立了数据源与ListView之间的适配关系,将数据源转换为ListView能够显示的数据格式,从而将数据的来源与数据的显示进行解耦,降低程序的耦合性。List-View、GridView等数据显示控件有多种数据适配器,本文讲解最通用的数据适配器——BaseAdapter。

BaseAdapter是Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到ListView、Spinner、Gallery及GridView等UI显示组件,它继承自接口类Adapter。

BaseAdapter使用方法比较简单,主要是通过继承此类来实现BaseAdapter的四个方法。

978-7-111-58810-8-Chapter05-25.jpgpublic int getCount():适配器中数据集的数据个数。

978-7-111-58810-8-Chapter05-26.jpgpublic Object getItem(int position):获取数据集中与索引对应的数据项

978-7-111-58810-8-Chapter05-27.jpgpublic long getItemId(int position):获取指定行对应的ID。

978-7-111-58810-8-Chapter05-28.jpgpublic View getView(int position,View convertView,ViewGroup parent):获取每一行

Item的显示内容。

ListView、GridView等控件可以展示大量的数据信息。假如ListView可以展示100条信息,但是屏幕的尺寸是有限的,一屏幕只能显示7条。当向上滑动ListView时,显示项i-tem1被滑出了屏幕区域,那么系统就会将item1回收到Recycler中,即View缓冲池中,而将要显示的item8从缓存池中取出布局文件,并重新设置好item8需要显示的数据,放入需要显示的位置。这就是ListView的缓冲机制,总结起来就是一句话:需要时才显示,显示完即回收到缓存。ListView、GridView等数据显示控件采用这种缓存机制可以极大节省系统资源。(www.xing528.com)

下面是一个BaseAdapter实现的实例。

978-7-111-58810-8-Chapter05-29.jpg

978-7-111-58810-8-Chapter05-30.jpg

978-7-111-58810-8-Chapter05-31.jpg

上面代码利用了ListView的缓存机制,也利用ViewHolder类来实现显示数据视图的缓存,实现了优化程序的目的。

总体来说,BaseAdapter类的实现步骤如下。

(1)创建bean对象,用于封装数据。

(2)在主Activity中,初始化数据对象bean数组

(3)创建ViewHolder类,创建布局映射关系。

(4)判断convertView,为空则创建,并设置Tag,不为空则通过Tag取出ViewHolder。

(5)为ViewHolder的控件设置数据。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈