2014-07-01 16 views
0

关于lisview回收,我重新使用视图与视图,但现在我需要添加一些视图(ImageViews和textviews)不clearcut(视图数不总是相同的)。ListView回收

如何,我可以添加这些项目,而无需创建每个getView()方法的新观点,并在不影响列表?

+0

你能分享你的适配器的代码吗? – 2Dee

回答

0

的性能没办法不覆盖getView()创建不同的布局。您可以重复使用尽可能多的视图类型,请阅读this答案。

如果您遇到性能问题,请尝试使用新的widjet RecyclerView,该库位于Support-V7库。

0

我的策略来实现您无需创建新的视图每次getView()被调用描述的内容,方法是:

假设你有至多10个图像视图。您的视图xml将包含10个ImageView项目, 但是当getView()被调用时 - 您将设置不需要的元素到View.GONE的可见性,以及您需要View.Visible的唯一元素。

对我很好,这就是为什么不创建新视图的原因......

+0

xml和viewholder中的很多视图不会降低滚动性能? –

+0

根据我的经验,只要你玩这个数量的视图可见性(而不是更多),UI线程(和滚动速度)不会受到影响。除此之外 - 你真的没有更好的解决方案。作为@ dimetil说 - 使用RecyclerView可以更好地使用这种情况下(与我的接近),因为它具有属性 - mRecyclerView.setHasFixedSize(false),这恰恰解决了这个问题的动态变化很多视图参数.. –