我刚接触Android,目前正在开发我的第一个基于RecyclerView的严肃应用程序。我在插入或更新现有行时一直注意到我的应用程序中的一些问题行为:即使在执行addItem或notifyItemRemoved(position)的情况下执行了notifyItemInserted(position),添加/修改的行也无法正确显示。并在发生更改时使用notifyItemInserted(position)。在研究此问题时,我第一次遇到DiffUtil,强烈建议将其与RecyclerView一起使用。
我了解到,当人们处理适配器中的行/记录范围时,管理notifyXXX方法很繁琐,但我只是从ArrayList中添加,更新或删除单个行/记录。使用DiffUtil而不是notifyXXX是否对我有任何好处,还是DiffUtil仅在处理行组时才真正有用?显然,使用DiffUtil编写的代码更多,并且执行它也涉及一些开销。
答案 0 :(得分:1)
使用DiffUtil代替notifyXXX对我有什么好处
简短回答:否。
还是DiffUtil仅在处理行组时才真正有用?
DiffUtil
要做的是获取两个“之前”和“之后”列表,并为您计算 所有您必须进行的所有notifyItemInserted()
/已删除/已更改的调用。如果您知道您只需要进行以下调用之一,则无需完成实现DiffUtil.Callback
的工作。
使用DiffUtil编写的代码显然更多
这是不打扰的主要原因。这可能是一个很好的练习,但是保持简单总是更好的选择。
执行它还涉及一些开销。
除非您可以证明这是一个问题,否则我不会担心。在大多数情况下,我们谈论的是纳秒。