假设我有数百个项目的RecyclerView。有几种不同的视图类型。当我点击某个项目时,它必须更改其UI。我认为有两种选择:
网上有很多关于使用大量视图类型的异构RecyclerViews的文章,但是当项目视图动态变化并且RecyclerView随着时间的推移变得更加异构时,我还看到了一个关于最佳实践的文章。 哪种方法最好在Recycler视图中更改现有视图?有什么权衡?
答案 0 :(得分:1)
权衡很明显。
另一方面,您可以快速,精确地控制视图应在特定时间更改外观。将两个UI放在同一个地方允许更精细的动画和一个州与另一个州之间的过渡。
notifyDataSetChanged()
,而是使用notifyItemChanged()
等。这需要一些工作和关注。答案是,IMO,只有你能知道。你应该问自己:
这些视图是否复杂?他们有深层次的等级吗?是否会降低性能(例如在绑定部分中)?
是否容易理解哪些视图已更改,并在第二种情况下调用notifyItemChanged(int position)
?如果您有很多项目,重新加载整个数据集会对性能产生巨大影响。
您是否需要在一个州和另一个州之间进行一些视觉转换?也许您希望两个UI都适合单个容器(如CardView中的不同信息)?如果这是强制性的,则选项1更好。
你有2个以上的用户界面吗?如果是这样,我会使用视图类型,以免在单个子布局中托管太多视图。
和类似的问题。