JDS*_*JDS 3 java android cursor
假设我使用以下光标来获取某人的通话记录:
String[] strFields = {
android.provider.CallLog.Calls.NUMBER,
android.provider.CallLog.Calls.TYPE,
android.provider.CallLog.Calls.CACHED_NAME,
android.provider.CallLog.Calls.CACHED_NUMBER_TYPE
};
String strOrder = android.provider.CallLog.Calls.DATE + " DESC";
Cursor mCallCursor = getContentResolver().query(
android.provider.CallLog.Calls.CONTENT_URI,
strFields,
null,
null,
strOrder
);
Run Code Online (Sandbox Code Playgroud)
现在,我将如何删除此光标中的第i项?这也可能是一个光标获取音乐列表等等.所以我必须问 - 这甚至可能吗?我可以理解某些游标不允许第三方应用程序删除.
谢谢.
您可以使用MatrixCursor技巧。使用此策略,您可以复制光标,而忽略要排除的一行。显然,这对于大型游标不是很有效,因为您会将整个数据集保留在内存中。
您还必须在MatrixCursor的构造函数中重复列名称的String数组。您应该将其保留为常量。
//TODO: put the value you want to exclude
String exclueRef = "Some id to exclude for the new";
MatrixCursor newCursor = new MatrixCursor(new String[] {"column A", "column B");
if (cursor.moveToFirst()) {
do {
// skip the copy of this one ....
if (cursor.getString(0).equals(exclueRef))
continue;
newCursor.addRow(new Object[]{cursor.getString(0), cursor.getString(1)});
} while (cursor.moveToNext());
}
Run Code Online (Sandbox Code Playgroud)
我一直为此奋斗;尝试使我的应用仅包含游标和内容提供程序,并尽可能地远离对象映射。您应该看到我的一些ViewBinders ... :-)
| 归档时间: |
|
| 查看次数: |
10930 次 |
| 最近记录: |