2015-02-23 27 views
-2

我目前正在创建一个应用程序,从服务器下载列表并将这些列表放入SQLite数据库。在Mainactivity中,它调用数据库中的列表并将它们放入一个自定义适配器中,一切工作正常。Android - SQLite数据库不断显示应该删除的行

在此之后,我经历了几个屏幕来处理listdata,并且在最后的活动中它使用查询从db中删除它正在处理的行。在此之后,我使用logcat打印数据库,并显示该行已被删除。

接下来它将我带回Mainactivity,并在其onResume中再次从db加载列表,以发现应该删除的行仍在其中。 listview被正确更新,这实际上是一个从数据库中检索应该被删除的数据的问题。

那么,有人有一个想法,为什么我得到的行已被删除在另一个活动?

Mainactivity:

private List<String> list = new ArrayList<>(); 

public void onResume() { 
    super.onResume(); 
    context = getApplicationContext(); 

    ConsLoadListDataSource cllDataSource = new ConsLoadListDataSource(context); 
    cllDataSource.open(); 
    list = cllDataSource.sqliteToListIds(); 
    cllDataSource.close(); 

    logcat("Jadajada: " + list.toString()); 

} 

SQLiteHelper:

public List<String> sqliteToListIds() { 
    List<String> conList= new ArrayList<>(); 

    if (!db.isOpen()) { 
     open(); 
    } 
    Cursor cursor = db.query(ConsLoadListSQLHelper.TABLE_CONS_HEADER, 
      allConsListColumns, null, null, "loadlist" , null, "loadlist"); 
    cursor.moveToFirst(); 

    while (!cursor.isAfterLast()) { 
     conList.add(cursor.getString(1)); 
     cursor.moveToNext(); 
    } 
    db.close(); 

    return conList; 
} 

的删除方法的工作原理,但因为它是被要求为:

public void deleteList(int id) { 
    if (!db.isOpen()) { 
     open(); 
    } 

    db.delete(ConsLoadListSQLHelper.TABLE_CONS_HEADER, 
      ConsLoadListSQLHelper.CONS_HEADER_ID + " = " + id, null); 

    db.close(); 
} 

编辑

我发现了一种解决方法,通过删除服务器上的行并在返回MainActivity之前再次从服务器检索所有数据,但我仍然不知道如何解决原始问题,这使我应用程序更依赖于互联网连接,所以它不是完美的,但现在必须做。

+0

删除不是问题,所以我没有添加代码。在删除行后,我在同一活动中调用完整的数据库,并将行显示为已删除。问题是,在这次检查后,我回到我的Mainactivity,它仍然显示那里的行。但是我会添加删除方法以获得更好的效果。 – Daemun 2015-02-23 09:08:25

+0

Listview也不是问题,我已经测试过它,它的工作原理应该如此。问题是它仍然从数据库中检索应该被删除的数据。 – Daemun 2015-02-23 09:13:32

+0

显然不是因为我有这个问题。 – Daemun 2015-02-23 09:15:30

回答

0

删除单个项目必须使用

public void deleteRule(String value) { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     db.delete(Table_Name, Key_value + " = ?", 
       new String[] { value }); 
     db.close(); 

    } 

希望它能帮助。

+0

感谢您的帮助,但我的删除方法的作品。之后,麻烦开始了。 – Daemun 2015-02-23 09:10:48

+0

您正在从服务器加载文件,因此文件将从本地数据库中删除,而不是从服务器数据库中删除。 – 2015-02-23 09:12:09

+0

在加载Mainactivity之前将数据从服务器中取出并放入我的SQLite数据库,从那时起我只使用SQLite数据库。 – Daemun 2015-02-23 09:18:51