adapter

来源:互联网 发布:js改变div背景颜色 编辑:程序博客网 时间:2024/05/17 17:40
 

Android BaseAdapter详解(实现了SimpleAdapter,ListAdapter的接口)

 14222人阅读 评论(2) 收藏 举报
 分类:
在学习android的时候大体都经历了SimpleAdapter->BaseAdapter的过程。对于一般应用,到BaseAdapter也就够了。BaseAdapter实现了SimpleAdapter,ListAdapter的接口,给开发者提供了一些不常用方法的默认实现。而android还提供了更多的功能要靠ListAdapter接口使用。ListView只是重用view来展示数据。

1. 关于刷新顺序

[java] view plaincopy
  1. long getItemId(int position)  
  2. boolean hasStableIds()  

getItemId是干嘛用的?在调用 invalidateView()时,ListView会刷新显示内容。如果内容的id是有效的,系统会跟据id来确定当前显示哪条内容,也就是firstVisibleChild的位置。id是否有效通过hasStableIds()确定。

2. 关于内容类型

[java] view plaincopy
  1. int getItemViewType(int position)  
  2. int getViewTypeCount()  

如果ListView需要显示多种类型的内容,就需要有不同的缓存拿来使用。举个例子,position是奇数时getView()返回的是A类型的View;偶数的时候返回B类型的View。那么就需要在getViewTypeCount()中返回2;在getItemViewType()中当position是单数时返回一个值,双数时返回另外一个值。ListView根据返回值缓存和重用View,这样在getView()中调用强制类型转换就不会出现类型转换错误了。

不同类型的View也可一用FrameLayout集成在一个View中显示,这样View的结构就会变得很复杂,而且消耗更多的内存。

3. 关于点击

[java] view plaincopy
  1. boolean areAllItemsEnabled()  
  2. boolean isEnabled(int position)  
如果不希望Item点击时出现背景颜色,就使用这两个方法。它们分别针对所有和单个View实现。以前找这个东西都是从ListView中找,却没注意它就在Adapter中。

4. 观察者模式?

[java] view plaincopy
  1. registerDataSetObserver(DataSetObserver observer)  
  2. unregisterDataSetObserver(DataSetObserver observer)  
这两个方法是系统希望在Adapter中数据有变化时得到通知。通知做啥?刷新进图条的长度^_^。

总的来说,android对ListView的考虑还是比较细致的。作为一般使用BaseAdapter就够用了,需要显示不同类型的View等特殊控制时去实现别的方法。

Android BaseAdapter基础

BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery及GridView等UI显示组件,它是继承自接口类Adapter,
1、Adapter类简介
1)、Adapter相关类结构如下图所示:
Adapter
自定义Adapter子类,就需要实现上面几个方法,其中最重要的是getView()方法,它是将获取数据后的View组件返回,如ListView中每一行里的TextView、Gallery中的每个ImageView。
     2)、Adapter在Android应用程序中起着非常重要的作用,应用也非常广泛,它可看作是数据源和UI组件之间的桥梁,其中Adapter、数据和UI之间的关系,可以用下图表示:

t2A9A
3)、常用子类
Adapter常用子类
0 0
原创粉丝点击