在视图寻呼机中加载多个选项卡内容而不再获取它

时间:2016-03-02 18:54:45

标签: android json android-viewpager android-tablayout android-json

我在tabLayout中有一个视图寻呼机,它从JSON中获取它的内容 每页有不同的内容
我想做的就是让每个页面内容一次 有没有办法做到这一点 提前谢谢

1 个答案:

答案 0 :(得分:1)

是的,有可能。我的答案不是来自官方消息,而是我以前的经验。

将ViewPager创建为活动的成员:

private ViewPager pager;

然后在onCreate()方法中,初始化ViewPager:

pager=(ViewPager)findViewById(R.id.pager);

初始化您的选项卡布局和一个选项卡选择的侦听器:

tabLayout.addOnTabSelectedListener(
                new TabLayout.OnTabSelectedListener() {
                    @Override
                    public void onTabSelected(TabLayout.Tab tab) {
                        switch (tab.getPosition())
               {
                   case 0:
                       pager.setCurrentItem(0,true);
                       break;
                   case 1:
                       pager.setCurrentItem(1,true);
                       break;
                   case 2:
                       pager.setCurrentItem(2,true);
                       break;

               }
                    }

                    @Override
                    public void onTabUnselected(TabLayout.Tab tab) {

                    }

                    @Override
                    public void onTabReselected(TabLayout.Tab tab) {
                     switch (tab.getPosition())
               {
                   case 0:
                       pager.setCurrentItem(0,true);
                       break;
                   case 1:
                       pager.setCurrentItem(1,true);
                       break;
                   case 2:
                       pager.setCurrentItem(2,true);
                       break;

               }

                    }
                }
        );

为您的ViewPager设置适配器:

pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));

创建扩展MyPagerAdapter的私有内部类FragmentPagerAdapter

private class MyPagerAdapter extends FragmentPagerAdapter
    {
    private Tab1 tab1;private Tab2 tab2;private Tab3 tab3;

    //Tab1,Tab2,Tab3 representing your respective fragments
        public MyPagerAdapter(FragmentManager fm) {
            super(fm);

            //initialize all your fragments at once inside the constructor
            tab1=new Tab1();
            tab2=new Tab2();

            tab3=new Tab3();


        }

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

        @Override
        public android.support.v4.app.Fragment getItem(int position) {

//Return each fragment according to a position
            switch (position)
            {
                case 0:

                    return tab1;
                case 1:

                    return tab2;
                case 2:

                    return tab3;

            }
            return null;
        }

    }

这就是我处理案件的方式。良好的编码。