清除全局 ArrayList 也会清除另一个

2023-12-07

我有一个非常奇怪的错误。

我正在编写一个泛型类,在它的一个方法中,有一件奇怪的事情。这里是类代码(不完整):

public abstract class GenericFragment<M extends BaseModel, A extends BaseAdapter> extends HtmlFragment {

    private ArrayList<M> datas = new ArrayList<>();    
    private A adapter;

    protected abstract String getUrl();

    protected abstract A setAdapter();

    protected A getAdapter() {

        if(adapter == null) {
             adapter = setAdapter();
        }

        return adapter;
    }

    protected ArrayList<M> getDatas() {
        return datas;
    }

    protected void refreshData(ArrayList<M> datas) {

        Log.d("before glob", String.valueOf(this.datas.size()));
        Log.d("before loc", String.valueOf(datas.size()));

        this.datas.clear();

        Log.d("clear glob", String.valueOf(this.datas.size()));
        Log.d("clear loc", String.valueOf(datas.size()));

        this.datas.addAll(datas);

        Log.d("after glob", String.valueOf(this.datas.size()));
        Log.d("after loc", String.valueOf(datas.size()));

        getAdapter().notifyDataSetChanged();
    }
}

当我调用该函数时refreshData()全球的ArrayList被清除,但也被本地ArrayList。这是日志:

D/niviel: before glob: 5
D/niviel: before loc: 5
D/niviel: clear glob: 0
D/niviel: clear loc: 0
D/niviel: after glob: 0
D/niviel: after loc: 0

我只想将本地数组克隆到全局数组。

EDIT:

该函数在子类中调用。

requestData(activity, new requestDataCallback() {
    @Override
    public ArrayList<? extends BaseModel> parseDatas(Document document) {
        return RecordProvider.getRecord(activity, document);
    }

    @Override
    public void runOnUIThread(ArrayList<? extends BaseModel> datas) {

        refreshData((ArrayList<Record>) datas);
    }

});

在刷新 Data() 中,您使用的两个列表是相同的。

protected void refreshData(ArrayList<M> datas) {

Log.d("before glob", String.valueOf(this.datas.size()));
Log.d("before loc", String.valueOf(datas.size()));

//here you are clearing datas
this.datas.clear();

//so now your datas size will be 0

Log.d("clear glob", String.valueOf(this.datas.size()));
Log.d("clear loc", String.valueOf(datas.size()));

//here you are adding it to datas again whose size is already 0
this.datas.addAll(datas);

Log.d("after glob", String.valueOf(this.datas.size()));
Log.d("after loc", String.valueOf(datas.size()));

getAdapter().notifyDataSetChanged();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

清除全局 ArrayList 也会清除另一个 的相关文章

  • 如何在Netbeans中设置JList的ListModel?

    我在 Netbeans IDE 的帮助下设计了一个 Swing GUI 该 GUI 包含一个 JList 默认情况下 它使用 QAbstractListModel 将其作为 JList 构造函数中的参数传递以创建该 JList 我想在 Ne
  • 如何在 Eclipse 中获得完全限定的类名?

    有没有一种快速方法可以在 Eclipse 中单击 Java 类并获取其完全限定名称 或将其复制到剪贴板 2016年6月29日编辑 正如 Jeff 所指出的 您只需要执行以下第二步 1 Double click on the class na
  • eglCodecCommon:setVertexArrayObject:设置vao调试消息

    我的 Android Emulator API 28 logcat 被这样的消息搞得晕头转向 D eglCodecCommon setVertexArrayObject set vao to 1 1 0 0 D eglCodecCommon
  • PHP 使用主键和辅助键对多维数组进行排序[重复]

    这个问题在这里已经有答案了 如何按主键和辅助键对多维数组进行排序 例如 假设有以下数组 result array result 0 prio 1 result 0 date 2010 02 28 result 0 post February
  • Java HashSet 是线程安全的只读吗?

    如果我通过 Collections unmodifyingSet 运行 HashSet 实例后 它是线程安全的吗 我问这个是因为 Set 文档声明它不是 但我只是执行读取操作 来自 Javadoc 请注意 此实现不是同步的 如果多个线程同时
  • Eclipse 在 Android SDK 内容加载器处挂起

    我已经在 OS X 10 8 2 上使用 Eclipse 4 2 Juno 版本 20120920 0800 几个星期了 为 Android 3 0 及更高版本构建应用程序 我有一台带 SSD 的四核 i7 MacBook Pro 因此性能
  • Android 应用程序不需要任何特殊访问权限

    当我开始安装时myapp apk 我得到下面的屏幕 我的应用程序需要位置 外部存储权限 上述权限应该根据需要向用户请求 即在需要这些权限的代码之前 现在 当安装应用程序时 我会看到一个屏幕 上面显示应用程序不需要任何特殊访问权限 如下图所示
  • 如何将AVFrame转换为glTexImage2D使用的纹理?

    如您所知 AVFrame 有 2 个属性 pFrame gt data pFrame gt linesize 当我从视频 sdcard test mp4 android平台 读取帧后 并将其转换为RGB AVFrame副 img conve
  • Android 导航组件 - 从“任何地方”/基本片段导航?

    我正在开发一个应用程序 它有一个奇怪的花招 可以在设备旋转时打开特定的片段 在实现 android 的导航组件之前 所需要的只是对当前活动的引用 并且可以在特定时刻向用户显示的任何内容之上执行手动片段事务 但是在转移到导航组件之后 我发现很
  • 开发者环境-如何调用/消费其他微服务

    背景 我的环境 Java Play2 MySql 我在 Play2 gt S1 S2 S3 上编写了 3 个无状态 Restful 微服务 S1 消耗来自 S2 和 S3 的数据 因此 当用户点击 S1 时 该服务会异步调用 S2 S3 合
  • Android Studio - 无法解析符号“firebase”

    我目前正在将应用程序升级到新的 Firebase 版本 我按照指南进行操作 包括classpath com google gms google services 3 0 0 在我的项目 build gradle 的依赖项中以及compile
  • 使用 Java 8 Spring 4 + MyBatis 集成问题

    使用 Java 8 1 8 0 60 Spring 4 2 1 和 MyBatis 3 3 0 时遇到以下异常 Sep 29 2015 11 02 58 AM org springframework context annotation A
  • 为什么不能在 if 语句中声明变量?

    以下 Java 代码无法编译 int a 0 if a 1 int b 0 if a 1 b 1 为什么 不能有任何代码路径导致程序将 1 分配给b无需先声明 我突然想到b的变量范围可能仅限于第一个if声明 但后来我不明白为什么 如果我实在
  • Dart/Flutter 如何编译到 Android?

    我找不到任何具体的资源 Dart 是否被编译到 JVM 或者 Google 的团队是否编译了 Dart VM 以在 JVM 上运行 然后在 JVM 内的 Dart VM 中运行 Dart 前者更有意义 并且符合 无桥 的口号 但后者似乎更符
  • Firebase:用户注册后如何进行电话号码验证?

    所以我知道我可以使用电子邮件验证或电话号码验证 但我想做的是在用户注册或登录后进行电话号码验证 如何连接这两种身份验证方法 最后 Firebase中是否有一个函数可以检查用户是否通过电话号码验证 谢谢 即使用户已通过身份验证 您仍然可以使用
  • 如何缩短 PHP if 语句?

    我有一个 if 语句 我需要将单个字符串与许多不同的选项进行比较 我在下面发布的代码非常清楚地表明了我的意思 我知道有两种方法可以做到这一点 但另一种甚至更长 那么 是否有任何函数可以以更短的方式实现类似的功能 我的要求可能看起来很愚蠢 但
  • Java 中序列化的目的是什么?

    我读过很多关于序列化的文章 以及它如何如此美好和伟大 但没有一个论点足够令人信服 我想知道是否有人能真正告诉我通过序列化一个类我们真正可以实现什么 让我们先定义序列化 然后我们才能讨论它为什么如此有用 序列化只是将现有对象转换为字节数组 该
  • 从 Dropbox 下载文件并将其保存到 SDCARD

    现在我真的很沮丧 我想从 Dropbox 下载一个文件并将该文件保存到 SD 卡中 我得到的代码为 private boolean downloadDropboxFile String dbPath File localFile throw
  • 无法解析“:feature@debugFeature/compileClasspath”的依赖关系:无法解析androidx.annotation:annotation:1.0.0-rc01

    将 Android Studio 更新到 3 3 Canary 10 从之前的 Canary 后 我开始遇到 Gradle 同步问题 ERROR Unable to resolve dependency for feature debugF
  • 如何使用socket.io发送图像文件(二进制数据)?

    我无法从以下位置发送数据Android Client to NodeJS Server I use Socket IO 客户端 https github com socketio socket io client java我的客户端中的ja

随机推荐

  • 如何为数组编写 setter 和 getter? (c++)

    我在 C 中编写一个类 但是我不确定如何为数组创建 setter 和 getter 抱歉 这是一个基本问题 我收到以下错误 标记之前的预期主要表达式 这是我的代码 Class planet public body private strin
  • 查找连续出现次数最多的数字的算法 - C++

    我需要帮助制定一种算法来解决一个问题 有一行数字在该行中出现不同次数 我需要找到出现次数最多的数字以及它在该行中出现的次数 例如 1 1 5 1 3 7 2 1 8 9 1 2 那就是 1 它出现了 5 次 该算法应该很快 这是我的问题 有
  • rabbitmq 与 spring amqp - 消息在 AmqpException 情况下卡住

    我在我的消费者内部抛出 AmqpException 我的期望是消息将以 FIFO 顺序返回到队列 并在将来的某个时候重新处理 Spring AMQP 似乎没有将消息释放回队列 而是尝试一遍又一遍地重新处理失败的消息 这会阻止处理新到达的消息
  • 添加到下载列表 Android

    类中的以下函数DownloadManager将文件添加到下载数据库系统 因此它可以出现在下载应用程序中 从而有资格由下载应用程序管理 addCompletedDownload String title String description
  • 使用Qt时如何打印到控制台

    我正在使用 Qt4 和 C 来制作一些计算机图形学程序 我需要能够在运行时在控制台中打印一些变量 而不是调试 但是cout即使我添加库似乎也不起作用 有没有办法做到这一点 如果它足够好打印到stderr 您可以使用以下最初用于调试的流 in
  • PHP从特定位置附加到文件

    在 php 中 我打开一个文本文件并附加到它 但是我需要在文件末尾之前附加 3 个字符 换句话说 我需要从文件中的特定位置追加 写入 有人可以帮忙吗 此致 鲁本 您需要打开文件进行编辑 查找到所需的位置 然后写入文件 例如 进一步参考php
  • 在 Visual Studio 2013 的可用模板中添加项目

    如何在 Visual Studio 2013 可用模板的树视图中添加新的模板类型 如果单击 新建项目 在下一个打开的窗口的右侧窗格中 会显示 Visual Studio 提供的可用模板的列表 例如分类为 Visual C Visual C
  • 嵌套 ssh 中 bash shell 脚本中的命令行参数

    我正在尝试使用 1 2 变量 这些变量是我通过命令行传递给 bash shell 脚本的 我在 ssh 调用中使用这些变量 但似乎 ssh 内的变量没有被替换 外部的变量正在被替换 有什么解决办法吗 这是代码 bin bash ssh t
  • 如何在 BigQuery 中提取两个时间戳之间的唯一天数?

    对于两个不同的时间戳 假设时间戳 2015 02 01 和时间戳 2015 02 12 我想要一个包含其间所有日期的列 像这样 12行 2015 02 01 2015 02 02 2015 02 12 您可以通过公共数据集上的交叉联接来做到
  • 使用 ASP.NET MVC 3.0 进行日期验证

    我的 MVC UI 上有一个名为 startDate 的日期字段 用户使用 jquery 日期选择器选择日期 因为我想验证所选日期不应是过去 2 个月和未来 2 个月 我编写了以下代码来验证日期 public sealed class Da
  • CoreData 崩溃,主队列上下文设置为私有队列上下文的子级

    我的问题是这样的 我想异步保存到磁盘 设置核心数据堆栈的代码如下所示 NSManagedObjectContext managedObjectContext NSPersistentStoreCoordinator coordinator
  • MySQL 中使用 Join 删除

    这是创建我的表的脚本 CREATE TABLE clients client i INT 11 PRIMARY KEY client id CREATE TABLE projects project id INT 11 UNSIGNED c
  • 类似 macOS Swift Safari 的选项卡

    我想添加您可以看到的选项卡机制 例如在 Safari 控制台或 Finder 中 http dailymactips com working with finder tabs on your mac 我已经搜索了很多 但我找不到这方面的好的
  • 如何配置 tsconfig.json 将文件从多个源文件夹输出到单个平面 outDir?

    我有多个打字稿projects e g client and server 它们共享一些通用功能 位于common文件夹 考虑这个文件夹结构 client tsconfig json src client ts common src uti
  • 使用 Clang 的嵌套函数重写 GCC 清理宏?

    我正在尝试解决第三方库的问题 问题是该库使用隐藏在宏中的 GCC 嵌套函数 而 Clang 不支持嵌套函数并且没有计划这样做 参见 Clang Bug 6378 错误 函数上的存储类非法 这是我和 Clang 的痛点的宏 define RA
  • 如何获取爆炸后的数组值?

    我已将数组中的值从一页传递到另一页 我可以通过爆炸提取前两个变量 但无法获取数组中形成的第三个值 这是我的数组 user rate POST user rate 15000 ss Array list total promo rate ex
  • 代码::阻止 MinGW Windows Defender Trojan:Win32/Fuery.C!cl

    我正在 Code Blocks 20 03 和 MinGW GCC Build 20200227 1 9 2 0 单独安装 中测试一个简单的 hello world 程序 但运行它时控制台上没有收到任何消息 起初我认为这是一个编译器问题 无
  • 将大整数从 SQL Server 导入到 R 中

    我正在尝试将 SQL Server 表导入到 R 中 该表的第一列是 17 位 ID library ODBC channel lt odbcConnect my db uid my id pwd my pw options digits
  • 什么是来自“Mozilla 兼容代理”的 Google Analytics 流量

    在工作中 我们最近对 URL 结构进行了一些更改 永久重定向到新 URL 将各种路由规则重定向到一致的格式 页面 这有效地改变了我们 90 的 URL 结构 在 Google Analytics 中 我们看到 访问者 数量增加了近 30 但
  • 清除全局 ArrayList 也会清除另一个

    我有一个非常奇怪的错误 我正在编写一个泛型类 在它的一个方法中 有一件奇怪的事情 这里是类代码 不完整 public abstract class GenericFragment