问题标签 [android-diffutils]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 将 Recyclerview 与 DiffUtil.ItemCallback 一起使用不会滚动到顶部?
我搜索项目,每次从服务器获取时,当我搜索“o”时它会工作,然后“ot”它会再次工作,作为“o”搜索的结果,我假设有 20 个项目,以防万一“ot”我有 10 个项目是这 20 个项目的一部分,我确实在 EditText 中删除了 t 它仅显示 20 个项目 recyclerview 滚动指示器在中间 这是我的 diffUtil 代码
在这里你可以看到我拍摄的视频 https://drive.google.com/drive/folders/1ia5y9TtL0PSAM1M4hVBILWcdSK1BDyKI?usp=sharing
android - DiffUtil ItemCallback areContentsTheSame() 在更新 ListAdapter 上的项目后始终返回 true
在使用 ListAdapter 时,我注意到在更新项目后DiffUtil.ItemCallback areContentsTheSame()方法总是返回 true。调试代码我发现旧项和新项完全一样(旧状态消失了)。因此,没有调用ListAdapter onBindViewHolder()方法来更新列表中的相应行(只有项目的顺序通过漂亮的动画进行了更改)。
检查 Stackoverflow 上的其他问题似乎是许多开发人员面临的常见问题:
ListAdapter 未更新 reyclerview 中的项目
Recyclerview + Listadapter 中的项目不会在更新时重绘
具有 DiffUtil.ItemCallback 的 ListAdapter 始终认为对象相同
向 RecyclerView ListAdapter 提交新列表时,差异检查始终为 areContentsTheSame() 返回 true
但是,上述答案(如果有的话)都没有提供正确的解决方案。
它对我有用的唯一方法是每次观察者发出新结果时调用 ListAdapter 上的notifyDataSetChanged() 。
但是,如果通过强制 RecyclerView 重绘其内容(到目前为止它已显示的所有项目)而放弃了您可以获得的所有出色性能,那么使用 ListAdapter 和 submitList() 通知更改的全部意义是什么?
notifyDataSetChanged()
:
即使它有效,但如果您决定首先使用 ListAdapter,肯定不是正确的方法。
viewModel.getObjects().observe(this, listOfObjects -> listAdapter.submitList(new ArrayList<>(listOfObjects)));
:
没用。
更新列表中的项目后,我希望看到 UI 上发生的相应更改(不仅是排序顺序)对应的行如预期的那样。
android - 如何使用 DiffUtils 更新 RecyclerView 中的列表?
使用 DiffUtil ItemCallback 时,如何使用 DiffCallback 在 RecyclerView 中加载 newList。
当用户选择我希望 RecyclerView 更新的不同尺寸时,我想为用户提供从数据库返回不同尺寸列表的选项。
RecyclerViewAdatper
WordsDiffCallBack
我希望 RecycelView 在用户更改列表大小时自动更新。如何从 ListAdapter 调用旧列表,甚至会更新 RecyclerView
android-recyclerview - ItemDecoration 底部间距在添加新项目时未更新
我的 recyclerview 有一个 SpacingDecoration,它将在列表中的最后一项之后添加一些额外的间距。
这是我的间距装饰
这很好用。
但是当在列表底部添加一个新项目时,问题就开始了。
我正在使用 DiffUtils 来更新列表。
当列表更新并向列表添加新项目时,它会在底部间距 70 Dp 之后添加新项目。
希望你能理解我的问题。
我想添加最后一个新项目,以便最后一个项目和它之前的项目之间的间距减少到十二Dp。
请帮忙,因为我只是一个初学者
android - 实时数据列表 r 不使用 DiffUtil 方法更新
我使用 google 建议使用 diff utils 创建我的回收站视图,但 diff utils 没有使用我的 livedata 列表更新我已经尝试了一切
我的模型课
我的 Recyclerview 适配器
主要片段
它只是观察何时将新数据添加到房间数据库,但当我删除时不会计算列表没有任何反应,我将不胜感激
kotlin - 带有 diffutil 的 recyclerview 中的 submitList() 导致 recyclerview 闪烁
我有一个从远程源更新的recyclerview,所以它工作得很好,唯一令人讨厌的是,当屏幕被拉动以进行刷新并触发获取请求时,即使适配器中没有任何变化,recyclerview 也会更新导致屏幕闪烁,这很烦人。
我尝试弄乱 diffutils 但没有取得任何结果
在我的主要片段中:
紧随其后的是一名观察员
我的适配器:
最后是我的 diffutilCallback 类:
android-studio - behavior explanation: Using LiveData to update adapter with DiffUtil
I am updating my recyclerview by using LiveData
as below:
And I am using a FloatActionButton
to change the value of my MutableLiveData
as below:
All the data gets changed and onChanged
is called as expected, but it only updates my recyclerview when I enable the adapter.notifyDataSetChanged();
If I create a new ProductsObject
inside the FAB and submit a new list, the recyclerview gets updated without calling adapter.notifyDataSetChanged();
as below:
I appreciate if anyone could explain why.
Here is my adapter:
And here is my ViewModel
:
android-recyclerview - 使用 AsyncListDiffer 提交相同的列表,但回收站视图总是自动滚动到顶部
我尝试使用 AsyncListDiffer 提交相同的列表,但回收器视图总是自动滚动到顶部。当我调试时,在调用 areItemsTheSame 方法之前调用 submitList 后,我看到 recyclerview 自动滚动到顶部
TestPlaceUi 是数据类,不会覆盖 equal 和 hashcode。
android - 当数据不是从索引 0 开始时使用 DiffUtil
我的 RecyclerView 中的项目结构如下:
我的数据库会自动向 RecyclerView 发送更新。使用 DiffUtil 时,我删除了索引 3 处的项目。在索引 2 处的数据库项目中,DiffUitl Dispatcher 正在删除该项目。我认为这是由于 DiffUtil 调度程序不知道我的项目被一个索引“偏移”。我怎样才能解决这个问题?