我目前正在创建一个应用程序,从服务器下载列表并将这些列表放入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之前再次从服务器检索所有数据,但我仍然不知道如何解决原始问题,这使我应用程序更依赖于互联网连接,所以它不是完美的,但现在必须做。
删除不是问题,所以我没有添加代码。在删除行后,我在同一活动中调用完整的数据库,并将行显示为已删除。问题是,在这次检查后,我回到我的Mainactivity,它仍然显示那里的行。但是我会添加删除方法以获得更好的效果。 – Daemun 2015-02-23 09:08:25
Listview也不是问题,我已经测试过它,它的工作原理应该如此。问题是它仍然从数据库中检索应该被删除的数据。 – Daemun 2015-02-23 09:13:32
显然不是因为我有这个问题。 – Daemun 2015-02-23 09:15:30