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是一个好主意,如果我不在每个页面之后立即滑动两个页面,它会比以前更平滑。在你的链接上,我找到了这个链接:我使用了第二种方法来获取片段实例