android-diffutils相关内容

ListAdapter diff不在同一列表实例上调度更新,但也不在与LiveData不同的列表上调度更新

如果新列表只具有已修改的项,但具有相同的实例,则ListAdapter(实际上是其实现中的AsyncListDiffer)不会更新列表,这是一个已知问题。如果您在内部使用相同的对象,则更新也不适用于新实例列表。 要使所有这些都起作用,您必须创建整个列表和内部对象的硬拷贝。 实现这一目标的最简单方法: items.toMutableList().map { it.copy() } 但 ..

DiffUtil重绘ListAdapter Kotline中的所有项目

我在Android Kotlin中使用DiffUtil和ListAdapter。我在onResume方法中从服务器调用数据。当onResume调用每一项时,整个数据都在重新绘制视图。如果服务器端有任何数据更改,我希望更新视图,以便它将反映在应用程序中。 ListActivity.kt class ListActivity : BaseActivity() { lateinit ..

如果我以不同的项目顺序提交相同的列表,则 ListAdapter 不会刷新 RecyclerView

我正在使用 RecyclerView 和 ListAdapter(使用 AsyncListDiffer 计算和动画替换列表时的更改). 问题是,如果我 submit() 一些列表,然后重新排序该列表,然后 submit() 再次,没有任何反应. 我如何强制 ListAdapter 评估这个新列表,即使它“相同"(但顺序已更改)? 新发现: 我检查了 submitList() ..

DiffUtil ItemCallback areContentsTheSame() 在更新 ListAdapter 上的项目后始终返回 true

在使用 ListAdapter 时,我注意到在更新项目后,DiffUtil.ItemCallback areContentsTheSame() 方法总是返回 true.调试代码我意识到旧的和新的项目是完全一样的(旧的状态消失了).因此,ListAdapter onBindViewHolder() 方法没有被调用来更新列表中的相应行(只有项目的顺序用漂亮的动画改变).> 在 Stackoverfl ..

DiffUtil 不适用于嵌套的 recyclerview Kotlin

我有两个回收站视图.在我使用 notifyDataSetChanged 之前,我的视图不会更新.我要求类似类型的问题,但这次我有Github 链接.所以请看一看并向我解释我做错了什么.谢谢 MainActivity.kt 包 com.example.diffutilexample导入 android.os.Bundle导入 android.util.Log导入 androidx.activ ..

当视图更新 Android Kotlin 时,DiffUtil 不能与 ListAdpater 一起使用

嘿,我有 Reyclerview 和 DiffUtill 使用 ListAdapter.我通过 submitList 函数添加了元素.但是在更新列表视图时不会重绘元素.直到我再次使用 notifyDataSetChanged() 或设置 适配器.那么 DiffUtill 的用例是什么?当项目在列表和 reyclerview 中更新时重绘项目的正确方法是什么. 主活动 class MainA ..

Observer 中的 DiffUtil 未刷新视图调用 android kotlin

嘿,我正在将 diff util 与 ListAdapter 一起使用.列表的更新有效,但我只能通过滚动列表来查看这些新值,即使不回收视图(滚动时),我也需要查看更新,就像 notifyItemChanged() 一样.我尝试了这个答案中的所有内容 ListAdapter not updated item in RecyclerView 只对我有用notifyItemChanged 或重新设置适配 ..

Recyclerview DiffUtil项目更新

我的recyclerview中滚动无休止,因此,当有新数据时它将更新.我正在使用DiffUtil更新recyclerview中的数据.DiffUtil确实会更新数据,但是只要有更新数据,recyclerview就会滚动到顶部,并且看起来像是“使用notifydatasetchanged()".这是我的DiffUtil和我的适配器,用于更新数据. class ProductDiffUtil(va ..

将Recyclerview与DiffUtil.ItemCallback结合使用不会滚动到顶部吗?

每次从服务器获取内容时,我都会搜索项目 当我搜索"o"时它起作用,然后"ot"它又起作用,由于"o"搜索,我假设有20个项目,如果出现"ot",则有10个项目 这是这20个项目的一部分,我确实在EditText中删除了t,它仅在中间显示了20个项目,其中recyclerview滚动指示器 这是我的diffUtil代码 ListAdapter ..
发布时间:2020-07-16 20:21:17 移动开发

RecyclerView滚动到顶部,而AsyncListDiffer不起作用

我正在将RecyclerView与 AsyncListDiffer (计算和动画化旧项目与新项目之间的差异,全部在后台线程上.) 我有一个按钮可以对列表进行排序.在对它进行排序并使用mDiffer.submitList(items);将其重新设置为RecyclerView之后,我也调用了recyclerView.scrollToPosition(0)或(smoothScrollToPosit ..

如果我以不同的项目顺序提交相同的列表,ListAdapter不会刷新RecyclerView

我正在将RecyclerView与 ListAdapter一起使用(使用 AsyncListDiffer 进行计算)并在替换列表时更改动画). 问题是,如果我submit()一些列表,然后重新排序该列表,然后再次submit(),则什么也没有发生. 我如何强制ListAdapter评估这个新列表,即使它“相同"(但顺序已更改)? 新发现: 我检查了public void s ..

在ListAdapter上更新项目后,DiffUtil ItemCallback areContentsTheSame()始终返回true

在使用ListAdapter时,我注意到在更新项目之后, DiffUtil.ItemCallback areContentsTheSame()方法始终返回true.调试代码后,我意识到旧项目和新项目完全相同(旧状态消失了).因此,没有调用 ListAdapter onBindViewHolder()方法来更新列表中的相应行(仅通过漂亮的动画更改了项目的顺序). 检查有关Stackoverflow ..