gpt4 book ai didi

android - 更改 RecyclerView 中项目的 UI 的最有效方法是什么?

转载 作者:行者123 更新时间:2023-11-30 01:13:23 26 4
gpt4 key购买 nike

假设我有包含数百个项目的 RecyclerView。有几种不同的 View 类型。当我单击某个项目时,它必须更改其 UI。在我看来,有两种选择:

  • 将项目更改为不同的 View 类型并通知适配器它已更改,以便它可以扩展新 View 以显示新状态。
  • 将两个 View 都放在一个 xml 文件中。任何时候只有一个是可见的。当状态改变时,使用 setVisibility 函数在它们之间切换。

网上有很多关于使用大量 View 类型的异构 RecyclerView 的文章,但我还没有看到一篇关于当项目 View 动态变化并且 RecyclerView 随着时间变得更加异构时的最佳实践的文章。哪种方法最适合更改回收站 View 中的现有 View ?权衡是什么?

最佳答案

权衡非常明显。

  • 两个用户界面都在一个 View 中:根据您的 View ,这可能:
    • 使 View 变重以进行膨胀和布局
    • 放慢绑定(bind)过程,因为您必须绑定(bind)两个 UI
    • 最终,延迟滚动过程。

另一方面,您可以快速、精确地控制哪些 View 应在特定时间更改外观。将两个 UI 放在同一个位置可以实现更精细的动画以及一种状态与另一种状态之间的转换。

  • 不同的 View 类型:我认为您的情况不是首先创建 View 类型的原因 - 它们意味着在列表的不同位置同时拥有不同的 subview 。这:
    • 可能会减缓过渡。您必须非常小心告诉适配器重新加载对象的方式。由于您可以在任何地方阅读,因此您可能希望避免使用 notifyDataSetChanged(),它会重新加载任何对象,而是使用 notifyItemChanged() 等。这需要一些工作和关注。
    • 不允许(至少不容易)在一种状态和另一种状态之间进行视觉转换。

答案是,IMO,只有你自己知道。你应该问问自己:

  • 这些 View 是否复杂?他们有很深的等级制度吗?两者都会降低性能(例如在绑定(bind)部分)吗?

  • 在第二种情况下调用notifyItemChanged(int position) 是否容易理解更改了哪些 View ?如果您有很多项目,重新加载整个数据集会对性能产生巨大影响。

  • 您是否需要在一种状态和另一种状态之间进行某种视觉转换?也许您希望两个 UI 都适合一个容器(如 CardView 中的不同信息)?如果这是强制性的,那么选项 1 更好。

  • 您有超过 2 个 UI 吗?如果是这样,我会选择 View 类型,以免在单个子布局中承载太多 View 。

和类似的问题。

关于android - 更改 RecyclerView 中项目的 UI 的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38193290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com