gpt4 book ai didi

android - 动态创建的 ListView 项的 View 持有者模式

转载 作者:搜寻专家 更新时间:2023-11-01 07:52:52 28 4
gpt4 key购买 nike

我知道当你使用 ListViewArrayAdapter和布局资源,您应该使用 View 持有者模式来重用 convertView例如为了提高滚动的平滑度。

如果 ListView 的项目呢?是动态生成的,例如使用 new RelativeLayout(context)并使用 addView() 添加内容?在这种情况下,我应该使用类似于 View 持有者模式的东西来重用 RelativeLayout 吗? ?我的意思是这样的。

RelativeLayout relativeLayout = (RelativeLayout) convertView.getTag();
relativeLayout.removeAllViews();
// Now add all the required Views.

正在使用 View 持有者模式来避免实例化 RelatativeLayout 的新实例合理或是使用 View 持有者模式避免所有对 findViewById 的调用的主要原因来自膨胀的资源?

最佳答案

我同意@ivan-bartsov 的观点,并补充说这两种操作,即膨胀和通过 id 查找 View ,都是昂贵的,这也是为什么 ViewHolder 模式是可行的方法的原因。

我也想提一下。如果您的 View 组合数量有限,比如说 1、2、3 甚至 4,那么覆盖 Adapter.getViewTypeCountAdapter.getItemViewType< 将是一个非常好的主意 这样您就可以利用内置的 ViewHolder/回收功能来实现不同的项目布局。该框架将正确地为您提供给定位置的正确 convertView。

最后要注意的是,有时数据的结构方式使用 ExpandableListView 或类似的小部件会更有意义,这些小部件将为 subview 提供开箱即用的 View 回收,因此您不必自己给它们充气。

关于android - 动态创建的 ListView 项的 View 持有者模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32358323/

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