Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/235.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_Adapter - Fatal编程技术网

Java ViewPager+;片段中的适配器=>;慢扫

Java ViewPager+;片段中的适配器=>;慢扫,java,android,android-fragments,android-viewpager,adapter,Java,Android,Android Fragments,Android Viewpager,Adapter,我有一个带有一些片段的ViewPager。每个片段在带有阵列适配器的滑动抽屉中有一个列表视图(=刷卡前不可见) 适配器设置在onCreateView()上,这会减慢刷卡速度,因为每次刷卡时都要加载30个列表项,因为正在创建新的片段 我的问题是,当ViewPager空闲时,是否可以在刷卡后设置适配器?还是有更好的办法?展开滑动抽屉时,需要已加载列表 我的问题是,刷卡后是否可以设置适配器 当寻呼机空闲时 您可以在ViewPager上设置以下选项来监视刷卡手势。然后,您可以使用onPageSelect

我有一个带有一些片段的
ViewPager
。每个片段在带有
阵列适配器的
滑动抽屉中有一个
列表视图
(=刷卡前不可见)

适配器设置在
onCreateView()
上,这会减慢刷卡速度,因为每次刷卡时都要加载30个列表项,因为正在创建新的片段

我的问题是,当
ViewPager
空闲时,是否可以在刷卡后设置适配器?还是有更好的办法?展开滑动抽屉时,需要已加载列表

我的问题是,刷卡后是否可以设置适配器 当寻呼机空闲时

您可以在
ViewPager
上设置以下选项来监视刷卡手势。然后,您可以使用
onPageSelected()
(或
onPageScrollStateChanged()
监视当前状态)方法在选择新页面时获得通知,并从该方法开始加载数据


另外,请确保
列表视图
负责延迟,而不是代码的其他部分。

我也有类似问题。。。我用听众。尽管如此,当你把两页背对背地刷的时候,还是很落后。。。我做了这样的事情,改善了体验

viewpager.setOnPageChangeListener(new OnPageChangeListener() {
    int positionCurrent;
    boolean dontLoadList;
    @Override
    public void onPageScrollStateChanged(int state) {   
        if(state == 0){ // the viewpager is idle as swipping ended
                new Handler().postDelayed(new Runnable() {
                    public void run() {
                        if(!dontLoadList){
                        //async thread code to execute loading the list... 
                        }
                    }
                },200);
            }
        }
    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        positionCurrent = position; 
        if( positionOffset == 0 && positionOffsetPixels == 0 ) // the offset is zero when the swiping ends{
            dontLoadList = false;
        }
        else
            dontLoadList = true; // To avoid loading content for list after swiping the pager.
    }

}

如果你需要几毫秒的时间来加载作为viewpager补充的列表,就用户体验而言,这是可以的,而不是提供糟糕的刷卡体验。。。因此,我们的想法是在加载列表之前在线程中等待400ms,并确保当用户尝试快速滑动以查看viewpager内容时,您实际上不加载内容

我对setAdapter调用进行了注释,结果更加流畅。onPageSelected是一个好主意,但我只获取位置号,如何获取的当前实例Fragment@metinkale38这取决于您使用的适配器的类型,请参阅此问题中的前两个答案谢谢您在PageChangeListener是一个好主意,如果我不在每个页面之后立即滑动两个页面,它会比以前更平滑。在你的链接上,我找到了这个链接:我使用了第二种方法来获取片段实例