查询ContentProvider以获取某些ID

时间:2012-09-14 17:44:22

标签: android android-cursor android-cursorloader

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

想象一下,我有10个与1到10个ID的联系人,我希望得到一个Cursor联系人1和2。

工作代码将是:

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

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

您能想到使用selectionArgs参数并使其有效的方法吗?

1 个答案:

答案 0 :(得分:1)

如果您想使用selectionArgs,则只能使用

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

您需要根据运行时的参数数量构建"( ?, ?, ? )"字符串。 E.g。

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