android 中的 adapter介绍

网上搜集的,有点乱~~~

 

android 开发中列表的使用是十分常见的。 google 对列表的封装使列表既有显示传统文本列表的能力,也有加入了诸如选择项、复选项等处理事件的能力。这里写一些我这几天对这个问题的理解。

 

  在 android api 中, List adapter 都被放在了 android.widget 包内。包内的具体结构我这里先不展示了,主要侧重列表和 adapter adapter 的作用就是将要在列表内显示的数据和列表本身结合起来。列表本身只完成显示的作用,其实他就是继承自 VIEWGROUP 类。但是他又有一个独特的函数就是 setAdapter() 就是完成了 view adapter 的结合。 adapter 如同其本身含义,其实就是一个适配器,他可以对要显示的数据进行统一的封装,主要是将数据变成 view 提供给 list

 

  我们先来看看 adapter 的体系:

 

   public interface Adapter----0 ( 表示继承体系中的层次 )

 

   public interface ExpandableListAdapter---( 无所谓层次因为没有其他接口继承实现它 )

 

  这是 adapter 的始祖,其他个性化的 adapter 均实现它并加入自己的接口。

 

   public interface ListAdapter----1

 

   public interface SpinnerAdapter----1

 

   public interface WrapperListAdapter----2 ( 实现 ListAdapter)

 

  以上接口层面上的体系已经完了。可以看出来作为 widgetview 的桥梁 adapter 其实只分为 2 种: ListAdapter SpinnerAdapter 以及 ExpandableListAdapter 。也就是说所有 widget 也就是基于 list spinne ExpandableList 三种 view 形式的。

 

  由于在实际使用时,我们需要将数据加入到 Adapter ,而以接口形式呈现的 adapter 无法保存数据,于是 Adapter 就转型为类的模式。

 

   public abstract class BaseAdapter----2 ( 实现了 ListAdapter SpinnerAdapter)

 

  以抽象类的形式出现构造了类型态下的顶层抽象,包容了 List Spinner

 

   public class ArrayAdapter----3

 

   public class SimpleAdapter---3

 

   public class CursorAdapter----3 (CursorAdapter 其后还有子类这里先不探讨 )

 

  基本体系有了之后,让我们看看顶层 Adapter 里有哪些方法 ( 只列举常用的 )

 

   abstract Object getItem_r(int position)

 

   abstract int getCount_r()

 

   abstract long getItemId_r(int position)

 

   abstract int getItemViewType_r(int position)

 

   abstract View getView_r(int position,View convertVeiw,ViewGroup parent)

 

  以上是比较重要的方法, ArrayAdapter 他们也是重新实现以上方法的。在实际的开发过程中,往往我们要自己做属于自己的 Adapter ,以上方法都是需要重新实现的。这个在 android 提供的 APIdemo 例子中可以看到。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值