什么时候我不想在使用适配器时使每个列表项无效?

时间:2014-04-04 21:04:56

标签: java android listview adapter

我正在使用图像适配器来填充我的Android ListView。

我知道适配器会回收ListView

中的项目

但如果我需要取消列表中每个项目的每个视图,

what's the benefit anyway in recycling the items?a

我的意思是,什么时候不想让每个列表项无效?

我试图取消任何项目中的每个视图,但后来我想 - 无论如何回收的重点是什么,如何避免繁琐的无效。

中加入:

我的问题是当我在第一个项目的布局中更改图像视图时

然后我向下滚动,看到第4和第8项中的图像也发生了变化。

它提供更改的图像而不是默认图像。

我可以通过每次放置defualt图像来克服这个问题(无论如何都会出现在布局xml中)

但我认为:我必须在项目布局中的evry单一视图中进行此操作吗?

为什么不默认来自xml?

2 个答案:

答案 0 :(得分:0)

  

回收物品的好处是什么?

不确定我是否通过写无效来找到你,但回收非常有用。

让我们说你的屏幕只能显示5行ListView,那么为什么要对所有项目进行充气并只显示5?仅向下膨胀5,向下滚动时膨胀更多。

当从底部返回到顶部时,第一个项目被夸大但是被回收,所以android接受了视图并在底部行中使用它,所以它不是null但是值不正确,所以你需要更改它& #39;正确位置的值。

希望这是你的意思。

祝你好运

答案 1 :(得分:0)

ListView会回收列表中包含的Views。视图本身仅仅是所提供的适配器提供的数据的可视化表示。 ListView本身对它显示的实际数据完全没有任何作用。你不必废除任何东西。

发生这种情况的原因是在ListViews中,列表项几乎都是完全相同的(通常)。因此,当列表项不在视线范围内时,ListView将获取View并将其提供给适配器。然后,适配器将使用适当的数据填充View,并将其返回给ListView。然后ListView将它粘贴到列表可见部分的底部(或顶部)。这减少了膨胀新视图的开销。它限制了将View对象保留在内存中的内存使用。使整体滚动更顺畅。