2012-07-13 70 views
1

我在Android中创建了一个程序,在我打算重复思考数据库中的行的一个屏幕上,向用户显示每一行,并让他跳过或删除它。Android用光标删除行

在Java中,我可以用户的ResultSetdeleteRow()方法,但是Android系统目前还没有等效方法。或事件设置带有删除标记的列的方法。

将删除通过SQLiteDatabase删除或executeSql方法将当前打开的光标保持有效,将被删除的行将被删除吗?

如果它变得无效,那么建议不必重新查询数据库(或者至少不要每次重新编译语句)?

如果游标仍然有效但没有更新,将是确保用户无法返回到此行的最佳方法?

有没有更好的解决方案来解决这个问题?

+0

发布您尝试过的一些代码。当你定义你的sql helper和sql adapter时,真的很容易删除它。问候 – 2015-08-22 22:20:59

回答

1

只需构建一个要删除的项目ID列表。一旦用户操作完成,您可以在一个步骤中删除它们中的大部分。

+0

什么是最好的方式来存储ID,这样如果有电源故障,我可以在下次启动程序时进行删除操作? – bsagal 2012-07-13 10:33:16

0

您可以使用MatrixCursor做到这一点:

newCursor = new MatrixCursor(new String[] {col1, col2, col3}); // col names 
    mCursor.moveToPosition(-1); // your Cursor 
    while (mCursor.moveToNext()) { 
     if (<any condition>) { 
      newCursor.addRow(indicationNames.rows(mCursor)); 

     } 

    } 
    mCursor = newCursor ; 

通过这种方式,你必须在不影响数据库光标更新。