0

我需要创建一个水平列表类型的视图,它显示许多视图只是一个图像和一小段文本。该列表需要可以通过惯性滚动进行轻弹,具有视图的回收能力,并且需要能够在视图可见或超出可见范围时延迟加载视图。

这是我考虑过的以及为什么它们看起来不合适的原因。

图库 - 已弃用,因此无法使用。

ViewPager - 不允许您轻弹页面,轻弹只是移动到下一页。

Horizo​​ntalScrollView - 需要手动添加视图而不是使用适配器来提供所需的视图,因此视图不会被回收或延迟加载。

我也不能使用其他人创建的任何库或视图来实现这一点,无论他们的许可证是否表明他们可以免费使用。

为了实现这一目标,我想到了两种选择。第一种是使用 Horizo​​ntalScrollView 并在设置时创建和添加所有子视图但没有它们的图像,然后检测视图何时几乎可见并加载它们的图像。我仍然可以创建几百个视图并一次性将它们添加到这里,但至少我不会将所有图像加载到内存中。第二种选择是编写我自己的 AdapterView 来做我想做的事情,这似乎是最灵活但也是最劳动密集型的。

任何关于实现这一目标的最佳方式的意见将不胜感激。

谢谢

4

1 回答 1

0

使用 Horizo​​ntalScrollView,您需要手动添加布局。以我的分析,ViewPager 是最好的控制器。您可以通过其适配器轻松控制 viewpager 中的位置。您可以通过覆盖适配器类的 getPageWidth(int position) 方法在单个屏幕中设置 viewpager 的多个页面。您也可以使用片段类的 onCreateView 方法来重用视图。

@Override
    public float getPageWidth(int position) {
        // TODO Auto-generated method stub

          return 0.5f;
    }

这将在一个屏幕上一次有 2 页

于 2013-08-02T07:20:31.037 回答