編輯: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
前面幾篇文章分別討論了Activity和Service,本文就來討論BroastcastReceiver,Broastcast是應用程序間通信的手段。Broast
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放
本文實例講述了Android使用WebView播放flash及判斷是否安裝flash插件的方法。分享給大家供大家參考。具體實現方法如下: 一、問題: 最近幫一個同
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用