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中的控件设置数据

 

 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值