我有一个联系人表,我只需要获取某些 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/