Android BaseAdapter

  • 一、什么是数据适配器

下图展示了数据源,适配器,listview之间的关系

数据源来源各种各样,listview显示数据是有一定的要求,而适配器正是建立了数据源与listview之间的数据关系,进行了结偶,使程序更加容易扩展

  • 二、listview的显示与缓存机制

需要才显示,显示完就被回收到缓存

  • 三、BaseAdapter的基本结构

public int getCount():适配器中数据集中数据的个数

public Object getItem(int position):获取数据集中与指定索引对应的数据项

public long getItemId(int position):获取指定行对应的ID

public View getView(int position,VIew convertView,ViewGroup parent):获取每一个Item的显示内容

  • 四、BaseAdapter的三重境界

     1、逗比式

先创建一个listActivity extends Activity

在listActivity的xml中,放置一个listview控件

接着,创建listItem布局文件

再创建一个实体类,用来接收数据

接着在listviewActivity中对listView控件进行初始化,并构建数据源数据

接着构建适配器

最后在listActivity中,进行数据绑定

逗比式特点:没有任何优化处理,每次都创建新的View,设置控件,效率极其低下

2、普通式

普通式特点:利用了ListView的缓存特性,如果没有缓存才创建新的View。 但findVIewById依然会浪费大量时间

3、文艺式

创建一个ViewHolder类

文艺式的特点:不仅利用了ListView的缓存,更通过ViewHolder类来实现显示数据的视图的缓存,避免多次通过findViewById寻找控件

  • 五、三种方式的耗时比较

在adapter中设置一个成员变量,用来记录总耗时

public long mSumTime;

分别在三种加载方式中,获取加载时间并打印

long startTime = System.nanoTime();  //获取系统的纳秒时间

long endTime = System.nanoTime();

long delValue = endTime - startTime;  //获取程序运行时间的差值
       mSumTime += delValue;
       Log.d("sys", String.valueOf(mSumTime));

逗比式耗时:312634000

普通式耗时:287840000

文艺式耗时:227478000

综上比较,文艺式耗时最短

  • 六、BaseAdapter总结

ViewHolder优化BaseAdapter思路

1、创建Bean对象,用于封装数据

2、在构建方法中初始化用于映射的数据List

3、创建VIewHolder类,创建布局映射关系

4、判断contentView,为空则创建,并设置tag,否则通过tag来取出ViewHolder

5、给ViewHolder中的控件设置数据

 



 
发布了10 篇原创文章 · 获赞 1 · 访问量 1553
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览