2011-10-18 57 views
0

我想通過在EditText中發生OnTextChange時修改我的遊標選擇來過濾聯繫人列表。問題是:列表保持原樣,即不按照過濾器進行更新。我究竟做錯了什麼?我懷疑這是我的SQL查詢(特別是GLOB部分)?用WHERE條件過濾遊標

digitsText.addTextChangedListener(new TextWatcher(){ 
    public void onTextChanged(CharSequence s, int start, int before, int count){ 
    filterText = digitsText.getText().toString(); 
    WHERE_CONDITION = ContactsContract.Data.DATA1 + " GLOB '*" + filterText + "*'"; 
    cursor = getContentResolver().query(URI, PROJECTION, WHERE_CONDITION, null, SORT_ORDER); 
    startManagingCursor(cursor); 
    setListAdapter(adapter); 
    } 
}); 
+0

調用setListAdapter()這將有很大的幫助,如果你要對我們來說,實際上出了什麼問題。沒有得到結果?錯誤訊息? –

+0

順便說一下:讓用戶輸入未經過濾的數據庫是* bad *。回想鮑比表? –

+0

對不起,忘了提及 - 列表保持原樣,即它不會按照過濾器進行更新。感謝db輸入提示:)我將輸入限制爲只有數字和coupe特殊字符,所以不用擔心。 – Phat7

回答

1

當您生成新的Cursor時,您實際上沒有做任何事情。您需要:

  • 通話swapCursor()CursorAdapter,如果您是在API級別11或更高
  • 通話changeCursor()CursorAdapter(可能是更好的選擇,無論如何,如果你不被需要的老Cursor,如changeCursor()會爲你關閉它)
  • 創建一個新的CursorAdapter並使用新的適配器
+0

非常感謝,我會嘗試這些提示! – Phat7

+0

'changeCursor()'工作,非常感謝! – Phat7