在顶部添加新项目后,回收器视图不会滚动到顶部,因为列表适配器的更改尚未发生

2024-02-29

我在实时数据的开头获取包含新项目的新列表,然后使用其数据更新适配器

viewModel.myLiveData.observe { this, Observer { myList -> 
        adapter.submitList(myList) 
        recyclerView.scrollToPosition(0)
}

submitList它在后台线程上工作,因此总会存在延迟无法解决的竞争条件。幸运的是,我们可以使用一个RecyclerView.AdapterDataObserver列表计算完成时通知回调:

yourRecyclerViewAdapter.registerAdapterDataObserver(object: RecyclerView.AdapterDataObserver() {
    override fun onChanged() {
        recycler_view_list.scrollToPosition(0)
    }
    override fun onItemRangeRemoved(positionStart: Int, itemCount: Int) {
        recycler_view_list.scrollToPosition(0)
    }
    override fun onItemRangeMoved(fromPosition: Int, toPosition: Int, itemCount: Int) {
        recycler_view_list.scrollToPosition(0)
    }
    override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
        recycler_view_list.scrollToPosition(0)
    }
    override fun onItemRangeChanged(positionStart: Int, itemCount: Int) {
        recycler_view_list.scrollToPosition(0)
    }
    override fun onItemRangeChanged(positionStart: Int, itemCount: Int, payload: Any?) {
        recycler_view_list.scrollToPosition(0)
    }
})

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

在顶部添加新项目后,回收器视图不会滚动到顶部,因为列表适配器的更改尚未发生 的相关文章

  • 在 JellyBean 上使用 LogCat

    我有一个非常随机发生的错误 所以我依赖LogCat我从 Play 商店购买的监控应用程序 以查看发生时设备上抛出的异常 自从使用 Jelly Bean 以来 我没有看到任何日志记录 我读过 使用 Jelly Bean 应用程序只能看到Log
  • Android API版本兼容性

    我希望我的应用程序能够在 Android 版本 2 1 和 2 2 上运行 在我的应用程序的一个区域中 有一个肖像式相机 生成肖像相机预览的过程在两个操作系统版本上是不同的 据我所知 具体方法如下 2 1 Camera Parameters
  • 如何设置自定义谷歌地图标记的背景图像?

    我有一个用于 Google 标记的自定义图像 但我必须在其背景上设置另一个图像 是否可以设置地图标记的背景图像 是的你可以 试试这个所以问题如何使用 Android 地图 API v2 创建自定义形状的位图标记 https stackove
  • 动态创建形状

    我有一个在 XML 中定义的形状对象 如下所示
  • 从 Bitmap 类创建 .bmp 图像文件

    我创建了一个使用套接字的应用程序 客户端在其中接收图像并将图像数据存储在 Bitmap 类中 谁能告诉我如何创建一个名为我的图像 png or 我的图像 bmp来自此 Bitmap 对象 String base64Code dataInpu
  • Gradle 控制台 - 获取更多日志输出

    我正在使用Android Studio 在 gradle 控制台中收到以下错误消息 编译错误 查看日志了解更多详情 尝试 使用 stacktrace 选项运行以获取堆栈跟踪 使用 info 或 debug 选项运行以获得更多日志输出 构建失
  • kotlin 命令行编译器

    如何使用js命令行编译器 fun main args Array
  • addToBackStack 之后的 popBackStack() 不起作用

    我的项目包含两个片段 FragmentA 应用启动时默认加载的fragment FragmentB 替换fragmentA当单击按钮完成时 这是我的主视图的 XML
  • 获取TextView的高度

    我有一些文字将被放入TextView 我这样做是使用setText 现在我需要找到文本在文本中占据的行数或高度TextView 我尝试使用getHeight 但它总是返回 0 无论如何 有没有办法获得文本中存在的文本的高度TextView
  • 将 REST 服务与 Android 应用程序同步

    我使用一个 REST 服务来填充数据库中的信息 稍后由我的应用程序使用 我已经阅读了有关此事的多个主题 现在必须决定如何在 REST 服务和数据库之间实现同步 想象一个应用程序 它从谷歌金融 API 获取有关股票的信息并将其存储在数据库中
  • 如何在android中添加自定义列表视图点击操作栏的数量

    请帮助我如何将自定义列表视图点击次数添加到 Android 中的自定义操作栏 文本视图 这是我的Activity Class public class DetaisRESTActivity extends Activity String v
  • Android Studio 无法解析存储库

    在我的项目中 我尝试使用设计支持库 我的 Gradle 文件中有 dependencies compile com android support design 当我尝试构建这个时 我收到错误 通常我会点击Install Repositor
  • 如何让 LibGDX gradled eclipse 项目在 AIDE(Android IDE 应用程序)上工作

    我正在尝试让 libgdx gradle 项目在 AIDE 上运行 AIDE 是 Android 上的一款应用程序 其作用类似于 IDE 它似乎不起作用 因为 buildconfig java 没有生成包名称 有人有任何解决方法吗 好的 我
  • 提交后折叠搜索视图

    我在我的应用程序中使用 searchview 没有操作栏 提交查询文本后如何折叠搜索视图 我有这些听众 Override public boolean onQueryTextSubmit String query InputMethodMa
  • Android Market 多个 APK...不同的 CPU 架构怎么样?

    所以我想我现在可以使用针对目标 CPU 架构的不同 NDK 编译库来上传我的应用程序 但似乎这是不可能的 有人知道如何将不同的 APK 上传到 Android Market 每个 APK 都包含专门为不同 CPU 架构编译的库吗 我还没有尝
  • 存储 FCM 的令牌

    我正在尝试将我的令牌存储在我的云数据库中 我稍后将在云函数中使用此令牌 以便向已添加为好友的用户发送通知 然而 推送设备令牌不起作用 因为用户未经授权 授权后我无法保存它 因为令牌是在安装应用程序时生成的 private static fi
  • Xamarin.Forms 用相机拍照显示方向错误并且后退按钮崩溃

    我正在使用此处的 Xamarin Forms Camera 示例 https github com XForms Xamarin Forms Labs Samples tree master XF Labs CameraSample htt
  • 在 Android 中使用 Fragment 时处理后按

    我在应用程序中使用 Android 滑动菜单和导航抽屉 并且在应用程序中使用片段而不是活动 当我打开抽屉时 单击一个项目会出现一个片段 我使用以下代码从一个片段移动到另一个片段 Fragment fragment null fragment
  • 如何隐藏或删除 Android HoneyComb 中的状态栏?

    如何隐藏或删除 Android HoneyComb 中的状态栏 每次运行应用程序时 我都会发现某些内容必须被状态栏覆盖 我尝试改变AndroidManifest xml 但没有任何改变 你不知道 它被认为是永久的屏幕装饰 就像电容式主页 菜
  • 如何将上下文从一个活动传递到另一个活动?

    我有一个主要活动 它调用另一个活动来显示一些数据 我有一个私有数据库帮助程序对象 我在整个主要活动代码中使用它 有没有办法以优雅的方式将我的主要活动的上下文传递给我的子活动 即 来自子类 类似getCallingActivityContex

随机推荐

  • 使用 .NET Core 的 Linux/Unix 上的文件权限

    我正在尝试学习如何使用 NET Core 在 Linux Unix 上设置文件权限 我已经在这里发现了一个问题 它指出了 System IO FileSystem 的方向 但我似乎找不到任何有关如何使用它的文档 简而言之 我想从仅在 Lin
  • 在 React Native 应用程序中发送应用程序邀请

    在 facebook iOS SDK 中 有一个名为 App Invites 的模块 允许将您的应用程序的邀请发送给您的朋友 https developers facebook com docs ios https developers f
  • sstream 重新声明并出现公共访问编译器错误

    我在使用 gcc5 4 0 在大型项目上运行 make 时遇到了此错误 usr include c 5 sstream 300 14 error xfer bufptrs redeclared with public access stru
  • gensim 的 get_document_topics 方法返回的概率加起来不等于 1

    有时它返回所有主题的概率并且一切都很好 但有时它只返回几个主题的概率并且它们加起来不等于一 似乎这取决于文档 一般来说 当它返回很少的主题时 概率加起来大约为 80 那么它只返回最相关的主题吗 有没有办法强制它返回所有概率 也许我遗漏了一些
  • \t 只被视为 1 个字符吗?

    我试图用 do while 和子字符串来做一些基本逻辑 如下所示 bool foundFirstTaskname false int startCounter 0 do var checkEveryTwo name Substring st
  • 这是内置的绘图吗?

    In 这个链接的图像 http snpent com images button gif 我在很多应用程序中经常看到右侧的按钮 在我的 Moto Droid 上 它在设置应用程序中广泛使用 它还用作默认的 AlertDialog 图标 我可
  • 如何告诉 Clang 不要冒充其他编译器?

    我过去遇到过这个问题 LLVM 定义 GNUC https www google com search q 22 GNUC 22 LLVM bug 但它不能使用 GCC 可以使用的程序 我在 Windows 上再次遇到它 LLVM 定义 M
  • 如何禁用 Eclipse 中的格式化符号?

    由于所有格式符号 我实际上什么也看不到 我不知道那是什么热键 但我找不到任何解决方案如何禁用这些符号 你知道是否有热键吗 我不记得那个热键是什么了 You can also disable them by using this button
  • 如何将 pt 转换为 em?

    如何将 pt 转换为 em 因为我使用 Photoshop 来设计模板 软件的文本大小采用 pt 格式 然后我必须将设计细节传输给开发人员 他们总是需要 em 格式的所有文本大小 我参考了这个网站http pxtoem com http p
  • 在 XNA 中缩放整个屏幕

    我正在尝试使用 XNA 制作一个冒险游戏引擎 让您制作看起来像是 90 年代初期的游戏 例如触手之日 and 山姆和麦克斯上路 因此 我希望游戏实际以 320x240 运行 我知道 它可能应该是 320x200 但是嘘 但它应该根据用户设置
  • Cakephp 错误重定向

    所以这些我们都知道Error missing controller或任何其他错误CakePHP可以扔 现在我的问题可能相当简单 但我找不到有关该主题的任何文档 我如何重定向到404 not found or a 500 execption如
  • 无法使用 Git 将文件重置为特定提交

    我有一个修改过的文件 我想恢复到最新提交中的任何内容 但它 卡在 那里 总是被标记为已修改 git status On branch master Changed but not updated use git add
  • 如何使用双指针声明 NSString 变量

    我想使用双指针 我试图这样声明 NSString a 但是 Xcode 向我显示错误 指向非常量类型 NSString 没有显式所有权的指针 并且无法编译它 最后我想做这样的事 NSString a NSString b b NSStrin
  • 从映射中添加/删除键值对

    如何在 Elixir 映射中添加 和删除 键值对 这不起作用 map a 1 b 2 c 3 map d 4 添加到地图 Use Map put map key value https hexdocs pm elixir Map html
  • Tensorflow 中每个类别的 F1 分数指标

    我已经实现了以下指标来查看我认为相关的类的精确度和召回率 metrics tf keras metrics Recall class id 1 name Bkwd R tf keras metrics Recall class id 2 n
  • 计算R中目录的大小

    我想计算 R 中目录的大小 我尝试使用list info函数 不幸的是 它遵循符号链接 所以我的结果有偏差 return wrong size with duplicate counts for symlinks sum file info
  • 我可以在 .net core 中使用 Entity Framework 6(非核心)吗?

    Entity Framework Core 不支持空间数据 我需要在我的应用程序中使用空间数据 我可以在 net core 中使用 Entity Framework 6 吗 如果可以的话我该如何注册DatabaseContext in St
  • SIMD如下代码

    如何用 C 语言对以下代码进行 SIMIDize 当然使用 SIMD 内在函数 我在理解 SIMD 内在函数方面遇到困难 这会有很大帮助 int sum naive int n int a int sum 0 for int i 0 i l
  • Rails 控制台中没有数据库连接

    我的 Rails 应用程序在运行时运行良好rake db migrate但是当我尝试启动 Rails 控制台时出现问题 2 0 0p247 003 gt User gt User no database connection 这是由于 Ac
  • 在顶部添加新项目后,回收器视图不会滚动到顶部,因为列表适配器的更改尚未发生

    我在实时数据的开头获取包含新项目的新列表 然后使用其数据更新适配器 viewModel myLiveData observe this Observer myList gt adapter submitList myList recycle