首页 > 数据是从数据库加载的,可是每次打开Android应用,listview数据都会重复加载

数据是从数据库加载的,可是每次打开Android应用,listview数据都会重复加载

比如第一次安装打开数据有100条,可是关闭第二次打开就是有200条数据....就是重复了....可以怎么解决呢....


你的读取操作是不是写在onResume,好好看看你的读取操作写的位置,或者有没有写入操作。


这种情况,最好加log、加断点调试。从读取数据库,到显示在ListView中(中间是否经过Adapter?),这整个过程中,到底在哪一步数据从100条变成了200条?数据是重复的吗?
还是仅仅由于listView复用的原因,导致显示重复了,而数据并没有重复?
问题描述就一句话,如何让别人回答?


记录个ID,下次查找大于此ID的记录 就可以了么


首先你要确定是不是数据库中表的数据重复了,可以打开sqlite数据库文件看看表记录。
如果数据库没有问题,你再看看listview展示那一步是不是有问题,就像@li21所说,打个断点跟踪一下,一步一步排查问题的原因。


告诉你一个最简单的方法:使用SharedPreference来存储一个变量,用来记录是否已经导入了SQLite数据

我知道,光有思路是不够的,提供一个盲打的代码给你参考哈:

public void importSqliteData() {
    SharedPreference prefs = context.getSharedPreferences("data_sqlite", Context.MODE_PRIVATE);
    if (prefs.getBoolean("is_store", false)) {
        // 数据已经读取,直接返回即可
        return;
    } else {
        // TODO:读取sqlite数据
        
        // 保存读取状态
        SharedPreference.Editor editor = prefs.edit();
        editor.putBoolean("is_store", true);
        editor.commit();
    }
}

感觉是activity生命周期使用的不对,我猜你是在oncreate中调用的读取数据操作,而且没有对应的释放操作
1.看看你的数据加载过后是在内存里存着吗,别读出来有存到那个文件里了
2.你说关闭了再进去又出来了,我的猜想就是你返回出去,但是activity没有销毁,数据还在内存里存着,然后你进入,有调用了一次加载数据,这样就会出现两次

PS请多添加点信息到问题了,这样其他人才会更好的帮你解答


应该是你的数据是在onResume中获取的,每次回到这个Activity的时候都会走到onResume中去。

【热门文章】
【热门文章】