每次启动后清除Sugar数据库表列记录

时间:2017-03-14 03:00:22

标签: android database listview sugarorm

我有一个带有一些名称和网址的列表视图。我的应用程序启动后,检查我的本地数据库中是否有任何记录首先清除我的旧记录,然后用listview数据填充表列,如果不是只插入数据......这就是我在做的事情:

        List<LocalProduct> allAuthors = LocalProduct.listAll(LocalProduct.class);
    if (allAuthors == null) {
        for (int allList=0;allList<adapter.getCount();allList++){
            Product my = adapter.getItem(allList);
            String offline_name = my.name.toString().trim();
            String offline_url = my.image_url.toString().trim();
            LocalProduct book = new LocalProduct(offline_name, offline_url);
            book.save();
            }
        }else {
            allAuthors.clear(); //I tried this
            allAuthors.removeAll(allAuthors); //And this
        for (int allList=0;allList<adapter.getCount();allList++){
            Product my = adapter.getItem(allList);
            String offline_name = my.name.toString().trim();
            String offline_url = my.image_url.toString().trim();
            LocalProduct book = new LocalProduct(offline_name, offline_url);
            book.save();
            }
        }

但是我的表记录在每次启动后仍然存储相同的记录。 什么是正确的方法!?

2 个答案:

答案 0 :(得分:0)

clear()removeAll()仅从List中删除项目(加载时在内存中)不删除数据库中的记录。

如果要清除数据库中的记录,则需要使用:

db.delete(TABLE_NAME, null, null);

答案 1 :(得分:0)

在初始化LocalProduct类列表之前插入此行:

SugarRecord.deleteAll(LocalProduct.class);

示例:

SugarRecord.deleteAll(LocalProduct.class);
List<LocalProduct> allAuthors = LocalProduct.listAll(LocalProduct.class);