java - 使用 WHERE 条件过滤游标

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

最佳答案

当你生成一个新的Cursor时,你实际上并没有用它做任何事情。您需要:

  • 如果您使用的是 API 级别 11 或更高版本,请在 CursorAdapter 上调用 swapCursor()
  • CursorAdapter 上调用 changeCursor()(如果您不需要旧的 Cursor,这可能是更好的选择,因为 changeCursor() 将为您关闭它)
  • 创建一个新的 CursorAdapter 并使用新适配器调用 setListAdapter()

关于java - 使用 WHERE 条件过滤游标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7805521/

相关文章:

java - Java 中的模幂运算

android - 应用程序从一家公司转移到另一家公司和证书

android - 改变imageview的像素颜色

android - 无法在 Android 上使用 AES 密码读取加密视频

sql - 将 IF EXISTS 与 CTE 结合使用

Java串行编程

java - 使用 spring 在 hibernate 映射文件中动态添加模式名称

sql - 为什么 eval 在 Korma 中构建 WHERE 条件时宏不起作用

mysql - 如何在组中获取重复值

java - 配置Log4J每天写入新文件新日志文件