Adapter在Android中占据一个重要的角色,它是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。如图1直观的表达了Data、Adapter、View三者的关系。

图1 Adapter、数据、UI三者关系(PS:此图来自Google I/O)

一、Android中Adapter

图2:Android中Adapter类型层级图

由图2我们可以看到在Android中与Adapter有关的所有接口、类的完整层级图。在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展。比较常用的有 BaseAdapter,ArrayAdapter,SimpleCursorAdapter等。

  • BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;
  • ArrayAdapter支持泛型操作,通常需要实现getView方法,特殊情况下(结合数据row id),为了让ui事件相应处理方便点最好重写getItemId;
  • SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来。如需要实现更复杂的UI也可以重写其他方法。

二、一个继承BaseAdapter的类的代码段

   1: /**
   2:  * 歌曲列表适配器
   3:  * 
   4:  * @version 2010-11-24 下午05:13:33
   5:  * @author Hal
   6:  */
   7: public class AudioListAdapter extends BaseAdapter {
   8: 
   9:     private Context mContext;
  10: 
  11:     // 歌曲集合
  12:     private ArrayList<Audio> mAudios;
  13: 
  14:     public AudioListAdapter(Context mContext, ArrayList<Audio> mAudios) {
  15:         this.mContext = mContext;
  16:         this.mAudios = mAudios;
  17:     }
  18: 
  19:     @Override
  20:     public int getCount() {
  21:         return mAudios != null ? mAudios.size() : 0;
  22:     }
  23: 
  24:     @Override
  25:     public Object getItem(int position) {
  26:         if ((mAudios != null && mAudios.size() > 0) && (position >= 0 && position < mAudios.size())) {
  27:             return mAudios.get(position);
  28:         }
  29:         return null;
  30:     }
  31: 
  32:     /**
  33:      * 如果集合中的对象数据来自数据库,建议此方法返回该对象在数据库中的ID
  34:      */
  35:     @Override
  36:     public long getItemId(int position) {
  37:         if ((mAudios != null && mAudios.size() > 0) && (position >= 0 && position < mAudios.size())) {
  38:             return mAudios.get(position).getId();
  39:         }
  40:         return position;
  41:     }
  42: 
  43:     @Override
  44:     public View getView(int position, View convertView, ViewGroup parent) {
  45:         //TODO 返回自定的View
  46:     }

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. android上一些方法的区别和用法的注意事项
  5. android EditText设置不可写
  6. Android(安卓)拨号器的简单实现
  7. android实现字体闪烁动画的方法
  8. Android中dispatchDraw分析
  9. Android中不同应用间实现SharedPreferences数据共享

随机推荐

  1. android apk 签名
  2. android带进度的文件上传
  3. android横竖屏切换后不重建不销毁Activit
  4. gridlayout 子view撑出屏幕
  5. Android Studio中模拟器中关于VT-x is di
  6. Android获取IPV4的方法
  7. 关于Android加快应用崩溃效率
  8. Android开发必备的免费资源和工具
  9. Android C编程技巧
  10. 浅入浅出Android(000):Hello Android