当前位置: 首页 > 知识库问答 >
问题:

如果数据库保存现有数据,如何只调用活动中的方法一次?

汪甫
2023-03-14

我做了一个应用程序,它允许用户向SQLite数据库添加喜爱,然后将信息加载到favourites arraylist中,该arraylist显示在favourites活动中。当用户单击“添加到最喜欢的按钮”时,将执行此功能:

 public void loadFavourites() {

    SQLiteDatabase db = dbHelper.getReadableDatabase();     //Get the database from which to read values

    //Get columns and create a cursor database query
    String[] columns = {"favouriteId", "title", "owner", "url_m", "ownerPic", "description", "dateTaken"};
    Cursor cursor = db.query("favourites", columns, null, null, null, null, "favouriteId");

    Log.d("FavouritesDB", "" + cursor.getCount());      //Displays cursor count in the logcat

    cursor.moveToFirst();

        while (!cursor.isAfterLast()) {

            favID = cursor.getInt(0);
            title = cursor.getString(1);
            owner = cursor.getString(2);
            url_m = cursor.getString(3);
            ownerPic = cursor.getString(4);
            description = cursor.getString(5);
            date = cursor.getString(6);

            ImageInfo favourite = new ImageInfo();

            favourite.dateTaken = date;
            favourite.description = description;
            favourite.ownerPic = ownerPic;
            favourite.url_m = url_m;
            favourite.owner = owner;
            favourite.title = title;
            NetworkMgr.getInstance(this).favouritesImageList.add(favourite);

            cursor.moveToNext();        // Move to next entry
        }
}

这将成功地将图像添加到favourites arraylist中,并在用户访问favourites活动页面时显示该图像。

但是,如果我在favourites活动onCreate()中调用loadFavourites方法,则每次加载页面时,数据库中的favourites都会再次添加到arraylist中,因此这将创建每个favourite项的副本。

请有人建议我如何修复我的循环,以便当我的应用程序启动时,只添加数据库中现有的最喜欢的项目,而不会在每次加载活动时再次添加到arraylist?

共有1个答案

彭宜人
2023-03-14

在调用LoadFavourites()之前清除favourites arraylist或在LoadFavourites()的第一行添加FavouritesArrayList.Clear

 类似资料:
  • 问题内容: 我是Redis的新手,但是有一个与备份有关的问题。 现在,我有一个实例在Windows服务器上运行。在此实例内部,我目前有一个“作业”,可将数据存储在一个数据库中。我不希望备份这些数据。 我必须创造一份新工作。我的第一个想法是将数据存储在另一个数据库中,但是在同一实例上。然后,我将在此数据库ID上激活RDB备份。 但是,当我阅读redis文档时,会看到以下命令进行备份: 此命令仅备份当

  • 本文向大家介绍调用MySQL中数据库元数据的方法,包括了调用MySQL中数据库元数据的方法的使用技巧和注意事项,需要的朋友参考一下  MySQL的三个信息:     查询的结果有关的信息: 这包括由任何SELECT,UPDATE或DELETE语句产生数量的记录。     表和数据库有关的信息: 这包括表和数据库的结构有关的信息。     MySQL服务器的信息: 这包括当前状态的数据库服务器,版本

  • 我想使用JavaFx、Spring Boot和Spring Data JPA制作一个桌面应用程序,并将H2作为我的数据库。问题是我试图运行JUnit以将数据保存在本地目录中,但每次运行JUnit时数据都会丢失。 我的文件; 我的测试用例; 打印列表的大小是1,但当我再次像这样运行测试用例时 它打印的列表大小为0

  • 本文向大家介绍SQL恢复master数据库方法 只有mdf文件的数据库如何恢复,包括了SQL恢复master数据库方法 只有mdf文件的数据库如何恢复的使用技巧和注意事项,需要的朋友参考一下 首先先和大家讲一讲SQL Server恢复master数据库方法,具体步骤如下 第一步:复制model.mdf、mastlog.ldf、model.mdf、modellog.ldf、msdbdata.mdf、

  • 我们正在使用Spring启动,apache骆驼和多个数据源。 我们已经在linux服务器上部署了SpringBootJAR。 postgres的数据源属性为 Oracle的数据源属性 当应用程序保持理想状态时,经过一段时间后,我们尝试第一个请求失败,并得到错误jdbc连接失败,但它在第二个请求中工作,没有重新启动。 请让我知道如何保持数据库活动。

  • 本文向大家介绍MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据?相关面试题,主要包含被问及MySQL里有2000w数据,Redis中只存20w的数据,如何保证Redis中的数据都是热点数据?时的应答技巧和注意事项,需要的朋友参考一下 redis 配置文件 redis.conf 中有相关注释,大家可以自行查阅或者通过这个网址查看: http://do