2011-10-18 11 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()を呼び出しますよう、Cursor古いです実際に何が起こっていないのかわかります。結果が得られませんか?エラーメッセージ? –

+0

ところで、ユーザー入力をフィルタリングされていないデータベースに移動させることは*不良*です。ボビー・テーブルを思い出して? –

+0

申し訳ありませんが、忘れてしまった - リストはそのまま、つまりフィルタごとに更新されません。 DBの入力のヒントありがとう:)私は唯一の数字とクーペの特殊文字に入力を制限するので、そこに心配はありません。 – Phat7

答えて

1

新しいCursorを生成しても、実際には何もしません。あなたはとにかくあなたのCursorAdapter(かもしれ良いオプションにAPIレベル11以上

  • コールchangeCursor()上にある場合、あなたが必要とされない場合は、お使いのCursorAdapter

    • コールswapCursor():あなたはどちらかに必要changeCursor()は、それはあなたの場合に大いに役立つだろう新しいCursorAdapterを作成する)あなたのため
    • それを閉じ、新しいアダプタ
  • +0

    ありがとう、私はこれらのヒントを試してみましょう! – Phat7

    +0

    'changeCursor()'がうまくいきました、ありがとう! – Phat7