[置顶] Android adapter概括

         Adapter是数据绑定到UI界面上的桥接类,Adapter负责创建显示每个item的子View和提供对下层数据的访问,通过它将数据填充到ListView, GridView, Gallery。Android 系统提供了几种Adapter:ArrayAdapter<T>、 BaseAdapter、CursorAdapter、 HeaderViewListAdapter、ListAdapter、 ResourceCursorAdapter、SimpleAdapter、SimpleCursorAdapter、SpinnerAdapter、WrapperListAdapter,比较常用的有 BaseAdapter,ArrayAdapter,SimpleCursorAdapter等。  Data、Adapter、View三者的关系如下图所示:    

   [置顶] Android adapter概括_第1张图片
         在多数情况下,不需要创建自己的Adapter,Android提供了一系列Adapter来将数据绑定到UI Widget上,如下图所示。因为Android负责提供数据和选择用于显示每个项目的View,所以Adapter能快速地修改要绑定的控件的外观和功能。

[置顶] Android adapter概括_第2张图片

❑ BaseAdapter是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;

❑ ArrayAdapter支持泛型操作,通常需要实现getView方法,特殊情况下(结合数据row id),为了让UI事件相应处理方便点最好重写getItemId();  ArrayAdapter是一个绑定View到一组对象的通用类。默认情况下,ArrayAdapter绑定每个对象的toString值到在layout中预先定义的TextView控件上。

❑ SimpleCursorAdapter可以适用于简单的纯文字型ListView,它需要Cursor的字段和UI的id对应起来,如需要实现更复杂的UI也可以重写其他方法。SimpleCursorAdapter绑定View到Content Provider查询返回的游标上。指定一个XML layout定义,然后将数据集中的每一列的值绑定到layout中的一个View上。 

1. BaseAdapter的例子

      1: /**
   2:  * 歌曲列表适配器
   3:  * 
   4:  * @version 1.0   
      5:  * @author linghu
   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:     }
 

你可能感兴趣的:(UI,android,数据库,ListView,layout,null)