android - 查询 ContentProvider 的某些 ID

标签 android android-cursor android-cursorloader

我有一个联系人表,我只需要获取某些 ID。

假设我有 10 个 ID 为 1 到 10 的联系人,我想获得一个包含联系人 1 和 2 的 Cursor

一个工作代码是:

new CursorLoader(MyContentProvider.CONTACT_CONTENT_URI, null,
MyContentProvider.CONTACT_COLUMN_ID + " IN  ( 1, 2 )",
null, null);

我的问题是我无法使用 selectionArgs 参数,因为转义会中断查询。

你能想出一种使用 selectionArgs 参数并使它起作用的方法吗?

最佳答案

如果你想使用selectionArgs,你只能像这样使用它

String selection = "column IN (?, ?, ?)";
String[] selectionArgs = { "1", "2", "3" };

不过,您需要在运行时根据参数数量构建 "( ?, ?, ? )" 字符串。例如

private static String getSelection(int args) {
    StringBuilder sb = new StringBuilder(MyContentProvider.CONTACT_COLUMN_ID + " IN  (");
    boolean first = true;
    for (int i = 0; i < args; i ++) {
        if (first) {
            first = false;
        } else {
            sb.append(',');
        }
        sb.append('?');
    }
    sb.append(')');
    return sb.toString();
}

关于android - 查询 ContentProvider 的某些 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12429457/

相关文章:

java - sharedpref 将字符串添加到表中

android - 如何为 Listviews 安排繁重的工作以便稍后显示?

android - 无法在索引 3 处绑定(bind)参数,因为索引超出范围。该语句有 1 个参数

android - 来自光标加载器的 ListFragment 无法在方向更改时显示任何内容

android - 为什么通知 URI 对 MergeCursor 不起作用?

android - Google Play 应用搜索过滤器

android - 为什么屏幕旋转时 fragment 不保留状态?

android - 如何在 android 中平铺和滚动大图像 (10000x10000)

android - 从数据库中的列获取值

android - rxJava 和改造而不是 IntentService + CursorLoader?