使用WHERE条件过滤游标

时间:2011-10-18 10:06:24

标签: java android sql

我正在尝试通过在我的EditText中发生OnTextChange时修改我的光标选择来过滤联系人列表。问题是:列表保持不变,即根据过滤器不会更新。我究竟做错了什么?我怀疑这是我的SQL查询(特别是GLOB部分)?

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);
  }
});

1 个答案:

答案 0 :(得分:1)

当您生成新的Cursor时,您实际上并未对其执行任何操作。你需要:

    如果您使用的是API级别11或更高级别,则
  • 致电swapCursor() {/ 1}}
  • CursorAdapter上致电changeCursor()(如果您不需要旧的CursorAdapter,这可能是更好的选择,因为Cursor会为您关闭它)
  • 使用新适配器
  • 创建新的changeCursor()并调用CursorAdapter