Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Viewholder实现_Android_View_Android Viewholder - Fatal编程技术网

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对象将每个零部件视图存储在标记内 字段,以便您可以在不使用 需要反复查找它们。首先,您需要创建一个类来 保留您的一组完整视图

没有克隆,只有视图的可重用性