Android 의 Adapter 와 BaseAdapter 의 소개

공식 사이트 주소:http://developer.android.com/reference/android/widget/Adapter.html 성명 원본: frameworks \ base \ core \ java \ android \ widget \ \ Adapter. java
//frameworks\base\core\java\android\widget\Adapter.java
/**
* Adapter    AdapterView            ;
* Adapter          ;                    View。
*/
public interface Adapter {
    /**
     *     Observer, Adapter         ,      。  
     * DataSetObserver     , onChanged onInvalidated    。
     */
    void registerDataSetObserver(DataSetObserver observer);

    /**
     *            Observer 
     */
    void unregisterDataSetObserver(DataSetObserver observer);

    /**
     *    Adapter              
     */
    int getCount();   
    
    /**
     *               
     */
    Object getItem(int position);
    
    /**
     *            ID
     */
    long getItemId(int position);
    
    /**
     *       ID      ,                 
     *             ID,   true
     */
    boolean hasStableIds();
    
    /**
     *                   View;         View   XML       ;
     *  View   ,  View(GridView, ListView...)           ,         
     * android.view.LayoutInflater#inflate(int, android.view.ViewGroup, boolean)
     *      View,           View 。.
     * 
     * @param position            
     * @param convertView       View;  :   ,       ,       ;
     *                       View,           View;
     //          View    , Android ,AdapterView  View        。 
     //     100      ,           10   ,    10 View,   
     //          11 View ,   1 View       ,          ,
     //     View   ,                  ,
     //             IGNORE_ITEM_VIEW_TYPE  ,           
     *        Heterogeneous          View  ,  ,View       。
     * @param parent   View            。
     * @return         ,   View。
     */
    View getView(int position, View convertView, ViewGroup parent);
    /**
     *     AdapterView     View   ;
     *   ,           getView(int, View, ViewGroup)      View ,      。
     */
    static final int IGNORE_ITEM_VIEW_TYPE = AdapterView.ITEM_VIEW_TYPE_IGNORE;
    
    //               
    /**
     *       getView,          View   
     * @return     View   ; getView    View        ,         ;
     *           :     0 getViewTypeCount-1  ,     IGNORE_ITEM_VIEW_TYPE。
     * @see #IGNORE_ITEM_VIEW_TYPE
     */
    int getItemViewType(int position);
    
    /**
     *     getView   View     ,       getView          View;
     *            ,         ,       1.
     *             AdapterView ,     ;
     */
    int getViewTypeCount();
    
    static final int NO_SELECTION = Integer.MIN_VALUE;

     /**
      *              ,   true;          View;
      *           getCount() == 0,   getCount()  header footers ,
      *       ,               。
      */
     boolean isEmpty();
} 


//frameworks\base\core\java\android\widget\BaseAdapter.java
/**
*       ,  Adapter       ;
*     ListView(      ListAdapter  ),    Spinner(   SpinnerAdapter  );
*/
public abstract class BaseAdapter implements ListAdapter, SpinnerAdapter {
    private final DataSetObservable mDataSetObservable = new DataSetObservable();

    public boolean hasStableIds() {
        return false;
    }
    
    public void registerDataSetObserver(DataSetObserver observer) {
        mDataSetObservable.registerObserver(observer);
    }

    public void unregisterDataSetObserver(DataSetObserver observer) {
        mDataSetObservable.unregisterObserver(observer);
    }
    
    /**
     *         ,        ,          View     。
     */
    public void notifyDataSetChanged() {
        mDataSetObservable.notifyChanged();
    }

    /**
     *         ,            ;                    。
     */
    public void notifyDataSetInvalidated() {
        mDataSetObservable.notifyInvalidated();
    }

    public boolean areAllItemsEnabled() {
        return true; //   ,    
    }

    public boolean isEnabled(int position) {
        return true; //   
    }

    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        return getView(position, convertView, parent);
    }

    public int getItemViewType(int position) {
        return 0; //        0,   
    }

    public int getViewTypeCount() {
        return 1; //        0,   
    }
    
    public boolean isEmpty() {
        return getCount() == 0; //   0   
    }
}

 
 

좋은 웹페이지 즐겨찾기