Android Viewholder实现
我理解的想法和用法,但我仍然有一个问题:Android Viewholder实现,android,view,android-viewholder,Android,View,Android Viewholder,我理解的想法和用法,但我仍然有一个问题: 假设viewholder中有一个TextView,需要显示10个项目(“项目0,项目1…”)。 如果我调用findViewById一次,据我所知,我有一个TextView对象。 因此,在第一次调用getView时,我膨胀视图,找到引用并设置文本“item0”。 在第二次调用时,我得到相同的文本视图,并将文本“item1”设置为相同的文本视图。 为什么项目0文本没有更改 背景中有克隆吗 Is there any cloning in the backgro
假设viewholder中有一个TextView,需要显示10个项目(“项目0,项目1…”)。
如果我调用
findViewById
一次,据我所知,我有一个TextView对象。
因此,在第一次调用getView时,我膨胀视图,找到引用并设置文本“item0”。在第二次调用时,我得到相同的文本视图,并将文本“item1”设置为相同的文本视图。
为什么项目0文本没有更改
背景中有克隆吗
Is there any cloning in the background?
Android预先分配了大量视图,这些视图足以填满运行应用程序的设备屏幕(一个视图池),与内容视图相同,但与参考视图不同,假设您在适配器类中实现了ViewHolder,并在getView()方法中使用该holder,唯一可以确定的是,在您的案例中,TextView描述了父结构的一个插槽(例如ListView)。一旦在xml中定义了从适配器中膨胀的插槽,就不会有克隆或类似的操作了。
根据持有人的想法,其描述如下: 在滚动的过程中,您的代码可能会频繁调用findviewbyd() ListView,这会降低性能。即使适配器 返回用于回收的膨胀视图,您仍然需要查找 元素并更新它们。避免重复使用findViewById()的方法 是使用“视图保持器”设计模式 ViewHolder对象将每个零部件视图存储在标记内 字段,以便您可以在不使用 需要反复查找它们。首先,您需要创建一个类来 保留您的一组完整视图 没有克隆,只有视图的可重用性