2010-02-27 145 views
7

現在,我遇到了試圖在我的自定義SimpleCursorAdapter中實現FilterQueryProvider的問題,因爲我不確定在FilterQueryProvider的runQuery函數中該做什麼。Android:過濾SimpleCursorAdapter ListView

換句話說,由於包含我的ListView的查詢基本上從我的數據庫的表中獲取rowID,名稱和第三列,我希望能夠根據名稱列的部分值來過濾遊標。

但是,我不確定我是否可以直接從runQuery做到這一點,而不擴展我的數據庫類,因爲我想過濾現有的遊標,或者我將不得不在我的數據庫類中創建一個新的查詢函數,名稱列,如果是的話,我將如何在runQuery中使用CharSequence約束參數時創建查詢語句?

我也關心與試圖運行基於部分文本的多個查詢相關的性能問題,因爲所討論的DB表具有大約1300-1400行。換句話說,我是否會遇到嘗試過濾光標的瓶頸?

回答

3

你需要運行一個查詢,將返回一個新的過濾光標:

public class MyActivity extends ListActivity implements FilterQueryProvider { 

    private Cursor cursor; 

    @Override 
    public Cursor runQuery(CharSequence constraint) { 
     if(cursor != null) { 
      cursor.close(); 
     } 
     cursor = somehowGetAFilteredCursorFor(constraint); 
     startManagingCursor(cursor); 
     return cursor; 
    } 

}

+0

關閉遊標引起奇怪的行爲 - 列表視圖不會立即過濾,只隱藏軟鍵盤之後。在logcat中也有關於雙向和多次關閉遊標的警告消息 – vokilam 2011-08-29 06:25:22

相關問題