Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android 中文 API (102)—— CursorAdapter

Android 中文 API (102)—— CursorAdapter

編輯:Android開發實例

前言

  本章內容是android.widget.CursorAdapter,版本為Android 2.3 r1,翻譯來自"深夜未眠"。
 

 

正文

  一、結構

public abstract class CusrorAdapter extends BaseAdpater implements Filterable

 

java.lang.Object

android.widget.BaseAdapter

         android.widget.CursorAdapter

 

直接子類

      ResourceCursorAdapter

間接子類

SimpleCursorAdapter

 

  二、概述

    通過該類可以用Cursor的方式訪問數據庫,並將查詢出來的數據展示到列表視圖(ListView)部件上。其中游標攜帶的結果集中必須有列名為“_id”的列,否則這個類無法工作。

 

  三、構造函數

    public CusorAdapter(Context context,Cursor c)   

           構造函數。每當數據庫的數據發生改變時,適配器將調用requery()重新查詢以顯示最新的數據。

             參數

       context        應用程序上下文。

  c                 用來獲取數據的游標(Coursor)

 

    public CusorAdapter(Context context,Cursor c, boolean autoRequery)       

  構造函數。每當數據庫的數據發生改變時,適配器將調用requery()重新查詢以顯示最新的數據。

             參數

       context        應用程序上下文。

  c                 用來獲取數據的Coursor

                      autoRequry     設置為true時,每當數據庫的數據發生改變時,適配器將調用requery()重新查詢以顯示最新的數據。

 

  四、公共方法

  public abstract void bindView (View view, Context context, Cursor cursor)

  重用一個已有的view,使其顯示當前cursor所指向的數據。

  參數

                   view                已存在的視圖, 返回之前newView方法創建的視圖。

                   context          應用程序上下文

                   cursor               用於獲取數據的Coursor。Coursor已經移到正確的位置。

        

  public void changeCursor (Cursor cursor)

           更改底層的游標為新傳入的游標。如果游標已經存在則先關閉這個已存在的游標。

  參數                  

                   cursor               新Cursor。

 

  public CharSequence convertToString (Cursor cursor)

           將cursor轉換成CharSequence。子類應該重寫這個方法並轉換它們的結果。這個方法的默認實現是:當cursor為空時返回一個空串,否則直接返回調用cursor的toString()方法。

  參數        

                   cursor               將cursor轉換成CharSequence對象。

           返回值

             返回表示CharSequence的值。

 

  public int getCount ()

         (譯者注:獲取適配器中數據的總行數。)

             參見

                      getCount()

 

  public Cursor getCursor ()

           返回當前適配器綁定的Cursor對象。

  返回值

            Cursor對象。

 

  public View getDropDownView (int position, View convertView, ViewGroup parent)

  獲取下拉列表選項指定位置的視圖對象

  參數

           position  視圖(View)對象的行索引。

           convertView       重用已有的視圖(View)對象。備注:在使用前你應該檢查一下這個視圖對象是否非空並且這個對象的類型是否合適。由此引伸出,如果該對象不能被轉換並顯示正確的數據,這個方法內部就會重新創建一個合適的視圖(View)對象。

           parent  不管是轉換後的還是重新創建的視圖(View)對象,始終都會依附於parent對象上。

  返回值    

                   返回視圖(View)對象,該對象顯示數據集指定位置上的數據。

 

  public Filter getFilter ()

  返回一個可以通過一種過濾模式來約束數據的過濾器。

  這個方法通常被Adapter類實現。

  返回值

                   一個用於約束數據的過濾器

 

  public FilterQueryProvider getFilterQueryProvider ()

  返回一個提供過濾的查詢過濾器。若過濾器為null,則不再過濾。

  返回值

                   返回當前過濾器對象,如果不存在返回null。

                 參見

                   setFilterQueryProvider(android.widget.FilterQueryProvider)

                   runQueryOnBackgroundThread(CharSequence)

 

  public Object getItem (int position)

  (譯者注:獲取數據集中指定位置上的數據項目)

                  參見

                       getItem(int)

 

  public long getItemId (int position)

         (譯者注:獲取數據集中的指定位置上的行id。)

             參見

                       getItemId(int)

 

  public View getView (int position, View convertView, ViewGroup parent)

  (譯者注:獲取一個顯示數據集中指定位置數據段視圖。可以手動創建視圖,或者從XML設計文件填充。當視圖從XML設計文件填充時,父視圖(如GridView,ListView等)將接受默認的設計參數,除非使用inflate(int, android.view.ViewGroup, boolean)去指定一個根視圖和防止依附於根視圖。)

        參見

                   getView(int, View, ViewGroup)

 

  public boolean hasStableIds ()

無論項ID代表的基礎數據的是否變化都保持不變。

      返回值

  如果為TRUE,意味著相同的ID始終引用相同的對象。

 

  public View newDropDownView (Context context, Cursor cursor, ViewGroup parent)

  生成一個新的下拉視圖來保存cursor指向的數據

           參數

             context  應用程序全局信息接口(應用上下文)

  cursor  獲取數據的游標,它已經移動到正確的位置

  parent 與新視圖相關聯的上級視圖

  返回值

  新創建的視圖。

 

  public abstract View newView (Context context, Cursor cursor, ViewGroup parent)

  新建一個視圖來保存cursor指向的數據

           參數

             context  應用程序全局信息接口(應用上下文)

  cursor  獲取數據的游標,它已經移動到正確的位置

  parent 與新視圖相關聯的上級視圖

  返回值

                   新創建的視圖。

 

  public Cursor runQueryOnBackgroundThread (CharSequence constraint)

  執行含指定約束的查詢。此查詢依賴於適配器的過濾器。查詢是由FilterQueryProvider提供。如果沒有指定FilterQueryProvider,當前cursor不過濾只返回。該方法會通過changeCursor(Cursor)方法返回一個Cursor對象,並且關閉掉先前的Cursor對象。這個方法始終在後台線程執行,而不是在應用程序的主線程(或是UI線程)中運行。規定:當參數constraint為null或為空時,該方法返回原始結果。

        參數

              constraint 該查詢必須被過濾的約束。

  返回值

  返回含有新的查詢結果的Cursor。

  參考

         getFilter()

getFilterQueryProvider()

               setFilterQueryProvider(android.widget.FilterQueryProvider)

 

  public void setFilterQueryProvider (FilterQueryProvider filterQueryProvider)

  設置一個過濾器,用來過濾當前的Cursor對象。當這個適配器需要進行過濾操作時, runQuery(CharSequence)方法被調用

       參數

  filterQueryProvider  過濾器對象,設置為null時,就相當於移除了該過濾器。

                參考

                       getFilterQueryProvider()

runQueryOnBackgroundThread(CharSequence)

 

  五、受保護方法

  protected void init (Context context, Cursor c, boolean autoRequery)

  (譯者注:供構造函數使用初始化相關參數)

 

  protected void onContentChanged ()

      當cursor對象上的ContentObserver接收到改變的通知時就會調用該方法,其默認實現提供了自動重新查詢方式,但可以被子類重寫。

 

  六、補充
 

       文章精選

                   android CursorAdapter的監聽事件

                   實現基於Android的英文電子詞典

轉自:http://www.cnblogs.com/over140/archive/2011/02/24/1963447.html

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved