addOnPageChangeListener第一次不工作

时间:2015-12-23 09:42:52

标签: android android-layout android-fragments android-viewpager android-tablayout

我的主要活动中有一个recyclerview和一个浮动操作按钮。我有两个viewpager片段,只有一个linearlayout。在 addOnPageChangeListener 中,我正在添加一个监听器,该监听器填充recyclerview并在选择TAB 1时实现onItemClick on浮动操作按钮,并且仅在选择TAB 2时填充recyclelerview并隐藏fab。 在我的两个片段中,我只是夸大了相应的布局。

当我打开活动时,recyclerview为空。当我选择另一个选项卡时,recyclerview开始工作并填充另一个选项卡选项卡2.当我现在选择TAB 1时,它也按预期填充,并且fab上的clickListener也按预期工作。

但是为什么第一次回收者视图是空的。滑动也不起作用。有解决方案吗我没有在每个片段中创建recyclerview,因为我要使用fab按钮更新它。我的fab按钮位于mainActivity中。我不想将fab按钮放在第一个片段中,因为这意味着当浏览片段时,默认的fab动画将会消失。

http://pastebin.com/rrumZyf4

2 个答案:

答案 0 :(得分:1)

加入派对的时间不多,但你可以做这样的事情......

mPager.addOnPageChangeListener(new OnPageChangeListener() {

            boolean first = true;

            @Override
            public void onPageScrolled(final int position, final float positionOffset,
                    final int positionOffsetPixels) {
                if (first && positionOffset == 0 && positionOffsetPixels == 0){
                    onPageSelected(0);
                    first = false;
                }
            }

            @Override
            public void onPageSelected(final int position) {
                setItem(item.get(position));
            }

            @Override
            public void onPageScrollStateChanged(final int state) {

            }
        });

在onPageScrolled方法中,您可以检查它是否是第一项,并相应地设置页面。希望这能解决你的问题。

答案 1 :(得分:0)

似乎您只是在onPageSelected方法内从服务器加载数据。这不会在第一次viewpager加载时触发。仅在页面更改时。 您必须在此方法之外加载初始数据。