使用 RecyclerView 适配器更新数据的最佳方法[重复]

2024-01-28

当我必须使用经典适配器时ListView https://developer.android.com/guide/topics/ui/layout/listview.html,我在 ListView 中更新数据,如下所示:

myAdapter.swapArray(data);

public swapArray(List<Data> data) {
  clear();
  addAll(data);
  notifyDataSetChanged();
}

我想知道什么是最佳实践回收视图 https://developer.android.com/training/material/lists-cards.html。因为在一个回收视图适配器你不能做clear and addAll as in ListView.

所以我尝试了一个notifyDataSetChanged,但没有成功。 然后我在我的视图中尝试使用 swapAdapter:

List<Data> data = newData;

MyRecyclerAdapter adapter = new MyRecyclerAdapter(data);

// swapAdapter on my recyclerView (instead of a .setAdapter like with a classic listView).
recyclerViewList.swapAdapter(adapter, false);

但对于最后一个解决方案,我仍然必须创建适配器的新实例,我觉得这不是最好的解决方案。我应该能够只更改我的数据而无需新的MyRecyclerAdapter.


RecyclerView 的适配器没有提供许多 ListView 适配器中可用的方法。但你的交换可以非常简单地实现为:

class MyRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
   List<Data> data;
   ...

    public void swap(ArrayList<Data> datas)
    {
        data.clear();
        data.addAll(datas);
        notifyDataSetChanged();     
    }
}

之间也有区别

list.clear();
list.add(data);

and

list = newList;

第一个是重用相同的列表对象。另一个是取消引用和引用列表。无法再访问的旧列表对象将被垃圾收集,但首先会堆积堆内存。这与每次想要交换数据时初始化新适配器相同。

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

使用 RecyclerView 适配器更新数据的最佳方法[重复] 的相关文章

  • 有关 paddingStart 使用的冲突 lint 消息

    API 17 RTL 支持发布后 我将以下内容添加到我的清单中 android supportsRtl true 这导致 Lint 在我的视图中有 paddingLeft Right 的地方正确地向我发出这些警告 考虑添加 android
  • RecyclerView 未显示列表中的所有项目

    我在用RecyclerView在我的应用程序中 每次我打开屏幕时 我只能看到一项 但当我调试时 它每次都会出现onBindViewHolder method 这是我的适配器 Override public ViewHolder onCrea
  • 在Android内存中存储gif图像

    我对安卓还很陌生 我想将图像保存到内存中 然后从内存中检索图像并将其加载到图像视图中 我已使用以下代码成功将图像存储在内存中 void saveImage String fileName img cnt jpg File file new
  • Android中如何将文件写入raw文件夹?

    我认为这是一个非常基本的问题 我目前正在编写这样的文件 File output new File exampleout mid 现在 我想将文件写入 myproject res raw 我读到我可以通过将完整的网址放在 中来做到这一点 但
  • Android-全屏视频视图

    我正在尝试使此 VideoView 以全屏模式显示 public class ViewVideo extends Activity private String filename private static final int INSER
  • Android Accessibility 执行触摸操作

    我想知道是否可以使用 Android 辅助功能服务在屏幕上的位置执行触摸操作 例如 Bundle arguments new Bundle arguments putInt coord X X value arguments putInt
  • Android Studio:Android 设备监视器未显示我的设备

    我的真实设备是索尼 Xperia c6502安卓版本4 3 我确定我将其连接到我的计算机然后打开开发者选项 USB调试 on 在 SDK 管理器中 Google USB 驱动程序已安装 I downloaded Xperia Z Drive
  • 如何找到特定路线上两点之间的距离?

    我正在为我的大学开发一个 Android 应用程序 可以帮助学生跟踪大学巴士的当前位置 并为他们提供巴士到达他们的预计时间 截至目前 我获取了公交车的当前位置 通过公交车上的设备 和学生的位置 我陷入了必须找到两个 GPS 坐标之间的距离的
  • opencv人脸检测示例

    当我在设备上运行应用程序时 应用程序崩溃并显示以下按摩 java lang UnsatisfiedLinkError 无法加载 detector based tracker findLibrary 返回 null 我正在使用 OpenCV
  • Android 性能:SharedPreferences 的成本

    当我的应用程序启动时 我使用分片首选项中的值填充容器类 这个想法是处理 SharedPreferences 和 PreferenceManager 一次 因为我猜它们很重 这是一个示例 SharedPreferences prefs Pre
  • 取消通知

    我使用Onesignal推送通知 需要取消所有onPause和onResume的通知 NotificationManager notificationManager NotificationManager getApplicationCon
  • cordova插件条码扫描仪打不开扫描

    我的条形码扫描仪插件有问题 我不是天才 我不太了解如何编写网络应用程序 我使用phonegap和cordova 并且尝试制作一个网络应用程序 在单击链接后扫描条形码 我之前已经使用此命令行安装了该插件 cordova plugin add
  • popupBackground 与 Material Design 相关的问题

    我一直致力于将我的应用程序更新为 Material Design 我有一个使用选项卡的应用程序 由于某种原因 每当我使用 android popupBackground 设置下拉菜单颜色时 它就会崩溃 我设置了一个带有选项卡的默认项目并使用
  • 如何从webkit浏览器中检测Android版本和品牌?

    如何通过webkit浏览器检测Android版本和品牌 可靠吗 我相信你可以检查用户代理 但是 我认为它不安全 因为有很多方法可以用来欺骗用户代理 在谷歌上搜索这个问题给了我们很多答案 它甚至可以在默认浏览器上运行 您只需输入 about
  • 在 Android ADT Eclipse 插件中滚动布局编辑器

    有谁知道当布局编辑器的内容溢出一个 屏幕 时如何滚动这些内容 我说的是在设计时使用 ADT 布局编辑器 而不是在物理设备上运行时滚动 效果很好 关闭 Android 布局编辑器中的剪辑 切换剪辑 按钮位于 Android 布局编辑器的右上角
  • 如何在 Android 中保存 Edittext 中的文本而不丢失文本的粗体、斜体等功能

    我想做的就是从 Edittext 中获取文本 该文本具有粗体和斜体等功能 并将其保存在文本文件中 但是当我读回并显示它时 这些功能丢失了 它们不显示 如何通过将文本保存在文本文件或任何文件中来保持丰富的功能 您可以使用Html toHtml
  • 从多个 TextView 中选择文本

    如何在android中从多个文本视图中选择文本 我已经尝试过以下代码 该代码一次仅适用于一个文本视图 我想一次性从许多文本视图中复制文本 android textIsSelectable true 你不能同时这样做 您需要在单个文本视图中设
  • firebase中按范围查询

    我有一个食品价格范围滑块 根据滑块的最小值和最大值 我想显示此范围内的食品 滑块代码 multiSlider setOnThumbValueChangeListener new MultiSlider SimpleChangeListene
  • 画布:尝试使用回收的位图错误

    我是一个相当新的程序员 所以任何建议将不胜感激 我有一个类 每次调用它时都会在循环中运行 AsyncTask AsyncTask 看起来像这样 public class LoadImageTask extends AsyncTask
  • 我可以通过在 Android Activity 中声明适当的成员“静态”来提高效率吗

    如果一个 Activity 在实践中是单例 我认为我可以通过声明适当的成员 静态 来获得一些效率 且风险为零 是的 The Android 文档说 http developer android com guide topics fundam

随机推荐

  • 读取动画 GIF 帧之间的延迟

    如何读取 GIF 动画每一帧之间的控制块 我对每一帧之间的延迟感兴趣 我查看了 ImageReader 的 Javadoc 但没有看到任何内容 这是我从动画 GIF 中读取所有帧的代码 我如何增强它以读取有关动画 GIF 中嵌入的每个帧的元
  • Python:导入文件并转换为列表

    我需要帮助导入文件并将每一行转换为列表 该文件的示例如下所示 p wfgh 1111 11111 111111 287 48 0 65626 1818 0 4654 21512 02020 0 第一行以 p 开头是标题 其余是子句 每个子句
  • Matlab中复变量的曲线拟合

    我想求解下图所示的方程组 矩阵系统 其中矩阵 A 的分量是复数 角度 theta 从0 to 2 pi有 m 个分区 并且n 9 已知值z x iy 假设矩阵 z 的 x 和 y 为 z 0 1 0148 0 1736 0 9848 0 3
  • 安装模拟器卡在“准备虚拟机”上

    我已经成功安装了 Android 版 VS Emulator 但是当我尝试安装设备时 它卡在 准备虚拟机 上 在此之前 Android VS 模拟器要求在提升模式下运行 显示以下问题 我还附上了 Hyper v 管理器中虚拟交换机的屏幕截图
  • 从 Windows Phone 8 设备检索故障转储

    有没有办法在开发期间从 Windows Phone 8 中获取故障转储 我正在寻找一个与普通 Win32 应用程序崩溃时类似的转储文件 或者类似于崩溃时 iOS 设备上保存的内容 以便稍后进行调查 我的问题具体是关于在崩溃后以某种方式从手机
  • App Engine 上的 Flask-SQLAlchemy 使用以下命令连接到 Cloud Compute Engine 上的 MSSQL 数据库

    我对整个 GCP 非常陌生 我需要为客户的项目部署 Flask 应用程序 考虑到 Google 提供的所有文档 部署应用程序非常简单 而且由于使用灵活的应用程序引擎似乎是最简单的方法 因此我正在尝试使用它 我遇到的问题是尝试连接到在计算引擎
  • getaddrinfo:节点名称或服务名称已提供,或未知

    我有一个 Ruby on Rails 应用程序 正在运行 Mac OS X 10 6 的计算机上部署 出现问题的代码是由delayed job 运行的 仅当通过delayed job运行时才会出现该问题 如果我在控制台中运行它 rails
  • 消除重复的多边形州/国家/地区共享边界

    我正在使用 GEOJSON 绘制带有传单的世界地图 并用虚线绘制边界 如下图所示 The problem I am having is that the line is not shared by two states if two sta
  • 使用 Typescript 导入 Electron 类

    如何将 Electron 类导入 Typescript 文件 以便智能感知正常运行 例如 我想把这个 var BrowserWindow require browser window var app require app app on r
  • 在单独的进程上运行 Goroutines(多处理)

    我目前有一个 MQTT 代码 可以订阅主题 打印收到的消息 然后向新主题发布进一步的指令 这订阅 打印在一个 Goroutine 中完成 并且出版是在另一个 Goroutine 中完成的 这是我的代码 var wg pg sync Wait
  • .net 中的数据类型和 C# 中的数据类型哪一种更快? [复制]

    这个问题在这里已经有答案了 大家好 首先我很抱歉 因为我的母语不是英语 我想了解 C 数据类型和 net 数据类型哪一种更快 我尝试通过下面的代码来理解 我认为 net 数据类型更快 这是正确的吗 我在 x86 和 x64 平台上测试了这段
  • 在Spring中正确使用Log4jConfigurer

    在我们的应用程序中 我们决定将 log4j 配置文件命名为自定义名称 以避免无意中从另一个 jar 加载默认文件 为了配置它 我们使用org springframework util Log4jConfigurer指定 log4j 位置
  • 在 Windows Phone 8.1 中以编程方式检测重新启动

    我有一个 WP 8 1 运行时 它启动了DeviceUseTrigger后台任务 问题是 每当手机重新启动时 该任务显然会取消 但任务注册仍然存在 所以当我下次启动我的应用程序时后台任务appears在现实没有跑步的情况下跑步 我想要某种方
  • 延迟脚本加载

    所以如果我有以下内容 我只是想延迟使用 settimeout 调用该文件的执行 我该怎么做 很奇怪的是 我在一个简单的函数上使用 settimeout 没有问题 但我在这个看似更简单的情况下有点困惑 我的想法是我可以创建一个在 x 时间后调
  • Apache Camel Java DSL 在正文中添加换行符

    因此 我在 Java DSL 中设置了一个 netty4 套接字路由 如下所示 Override public void configure throws Exception String dailyDataUri SOCKET daily
  • AWS 工作层 cron - 服务器错误 #500 - “发布 http 1.1 500 AWS aws-sqsd/2.0”

    我正在尝试在 Elastic Beanstalk 上设置一个 cronjob 任务正在安排中 出于测试目的 它应该每分钟运行一次 但是它不起作用 这是一个 Django 应用程序 该应用程序在两个环境中运行 一个是工作环境 另一个是 托管
  • Flutter - 检测充满其他小部件的屏幕上的点击

    我正在尝试检测屏幕上的点击 我尝试过使用的多种变体GestureDetector但这只会导致应用程序检测到点击子元素 and 不是屏幕 这是代码 class QQHome extends StatelessWidget override W
  • 如何平滑徒手绘制的 SVG 路径?

    我正在寻找一种解决方案 将由大量 auf LineTo 段组成的手绘 用户绘制的 SVG 路径转换为更平滑的路径 首选语言是 JavaScript 但欢迎任何建议 首先 我建议使用一个好的图形库 例如raphael 它将简化实际使用 jav
  • iOS 8 横向:键盘无法正确显示

    我有一个为 iOS8 编译的应用程序 该应用程序在项目设置中设置为仅允许纵向 根据设计 应用程序的视图不会旋转为横向 在 iOS7 中 当您旋转设备以横向时 键盘不会旋转 这是我想要的行为 但是 在 iOS8 中 当您将设备旋转到横向时 键
  • 使用 RecyclerView 适配器更新数据的最佳方法[重复]

    这个问题在这里已经有答案了 当我必须使用经典适配器时ListView https developer android com guide topics ui layout listview html 我在 ListView 中更新数据 如下