Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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
Java 是我实施的「;“无限滚动”;在ViewPager中高效_Java_Android_Android Fragments_Android Viewpager_Fragmentstatepageradapter - Fatal编程技术网

Java 是我实施的「;“无限滚动”;在ViewPager中高效

Java 是我实施的「;“无限滚动”;在ViewPager中高效,java,android,android-fragments,android-viewpager,fragmentstatepageradapter,Java,Android,Android Fragments,Android Viewpager,Fragmentstatepageradapter,我使用带有FragmentStatePagerAdapter的ViewPager来显示图像。我能够成功地显示图像,现在我正在尝试实现“无限滚动”。“无限滚动”意味着一旦我到达最后一个图像,我就能够循环到第一个图像&并且我将从第一个图像循环到最后一个图像。下面是一个“无限滚动”的说明 “无限滚动”:(…CA B C A…) 我的代码实现如下: /* PagerAdapter class */ public class SlidePagerAdapter extends FragmentStateP

我使用带有FragmentStatePagerAdapter的ViewPager来显示图像。我能够成功地显示图像,现在我正在尝试实现“无限滚动”。“无限滚动”意味着一旦我到达最后一个图像,我就能够循环到第一个图像&并且我将从第一个图像循环到最后一个图像。下面是一个“无限滚动”的说明

“无限滚动”:(…CA B C A…)

我的代码实现如下:

/* PagerAdapter class */
public class SlidePagerAdapter extends FragmentStatePagerAdapter {
    private int urlPicArryIndex = 0;

    public SlidePagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        return NUM_ITEMS;
    }

    @Override
    public Fragment getItem(int position) {

        System.err.println("orignal position = " + position);

        position = position % urlPicArray.size();
        urlPicArryIndex = position;

        System.err.println("urlPicArryIndex = " + urlPicArryIndex);
        System.err.println("position = " + position + ",     NUM_ITEMS = " + NUM_ITEMS);

        return PictureSectionFragment.newInstance(position, urlPicArray.get(urlPicArryIndex));
    }
}
以下是设置为哪些变量而未显示在上面的代码段中:

NUM_ITEMS设置为800

urlPicArray是另一种方法中设置的图像数组列表

我的代码适用于“无限滚动”,然而,我担心这是没有效率的。通过将NUM\u ITEMS设置为800,这会在内存中留出这么大的片段空间吗?顺便说一句,我意识到这并不是真正的无限滚动,然而,对于大多数真实世界的用例来说,它应该足够了


我是一个刚刚进入android开发的人,因此任何帮助/指导都将不胜感激

一旦你只需要图像,你就不需要片段了:简单的查看就足够了(阅读:)。而且已经有了
ViewPager
的书面或(以及大量其他)扩展

检查以下问题:

  • (!)
关于您的代码,它与其他人的想法几乎相同(这是一个好消息!)。可以改进的地方-如果视图/片段的数量很小,则使用
Integer.MAX\u值更改NUM\u项-我会避免反复创建它们,并用已经实例化的副本替换它们(即存储实例化的视图/片段,稍后再重用)


但请再次检查以下答案:-我认为这很好。

是否只显示图像?是的,我只显示图像。arrayList(urlPicArray)包含指向图像的URL。我认为使用
RecyclerView
而不是
ViewPager
更有效,因为您不需要为每个图像创建单独的片段。谢谢,这非常有帮助!使用Integer.MAX_值有什么作用?另外,将NUM_项设置为一个大数字是否会导致效率低下?从效率的角度来看,大NUM_项和MAX_值是相等的,只是代码样式稍微好一点(尽管两者都是“幻数”):-)