0

我有以下FragmentStatePagerAdapter内部类:

public class SectionsPagerAdapter extends FragmentStatePagerAdapter {

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

        @Override
        public Fragment getItem(int position) {
            /*
             * Here we are going to return the correct type of fragment for each
             * of the pages
             */
            switch(position){
            case 0:
                return MainListFragment.init(position); 
            case 1:
                return MainListFragment.init(position);
            case 2:
                return MainListFragment.init(position); 
            default:
                return MainListFragment.init(position); 
            }
        }

        @Override
        public int getCount() {
            // Show 3 total pages.
            return 3;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            Locale l = Locale.getDefault();
                    //breakpoint set here
            switch (position) {
            case 0:
                return getString(R.string.title_main_feed).toUpperCase(l);
            case 1:
                return getString(R.string.title_settings).toUpperCase(l);
            case 2:
                return getString(R.string.title_about).toUpperCase(l);
            }
            return null;
        }
    }

还有一些非常奇怪的行为。我在调试器中为正在发生的事情设置了几个断点,这就是我发现的。我第一次启动应用程序时,它会遇到一次断点,然后我点击“继续”并再次点击它,实际上是在应用程序加载之前两次点击 switch 语句。应用加载后,只有第二页(第 1 页或中间)会显示列表数据。

另一个奇怪的事情是,当我滚动时,position变量永远不会是正确的。当我从 0 开始并转到 1 时,断点被命中并且位置为 2,然后当我滚动到 2 时,断点未被命中。我回到1,断点被击中,但位置是0,而不是1。

我对发生的事情以及为什么我没有在所有页面上都获得列表数据感到困惑。有人可以澄清发生了什么吗?

基本上我想要做的是根据我所在的页面有不同的列表视图。我这样做是正确的方式,还是我应该采取另一种方式。

4

0 回答 0