Android的Viewholder实施(Android Viewholder implementa

2019-10-21 03:47发布

我理解的想法和使用Viewholder模式 ,但我仍然有一个问题:
假设我们有一个TextView的在viewholder,和10个项目显示(“item0,物品1 ......”)。
如果我打电话findViewById一次,因为我明白我有TextView中的一个对象。 因此,在第一次调用getView我膨胀的观点,找到参考,并设置文本“item0”。
在第二个电话,我得到相同的TextView和设置文本“物品1”相同的TextView的。
为什么项目0文本不会更改?
是否有任何背景克隆?

Answer 1:

Is there any cloning in the background?

预先分配的Android的若干意见是足以填满其中正在运行的应用程序(的景色的游泳池)装置的屏幕,从内容透视相同但不同于参考透视



Answer 2:

假设你实现一个适配器类里面你ViewHolder并使用持有人的getView()方法,这是肯定的唯一事情,就是你的情况TextView的,描述母结构(例如ListView控件)的插槽。 一旦你定义在XML中,从您的适配器膨胀槽,没有克隆或类似的东西。
据谷歌文档持有人的想法描述为:

您的代码可能的ListView的滚动,这会降低性能时经常致电findViewById()。 即使适配器返回回收充气视图,你仍然需要查找的元素和更新。 周围反复使用findViewById()的一种方式是使用“视图保持器”设计模式。

一个ViewHolder对象中的每个布局的标签领域内组件的观点店,让您可以立即访问它们,而不需要反复看看他们。 首先,你需要创建一个类来保存您的具体的一套看法。

没有克隆,只有观点的可重用性



文章来源: Android Viewholder implementation