【问题标题】:ViewPager with listviews and fragmentstatepageradapter带有列表视图和 fragmentstatepageradapter 的 ViewPager
【发布时间】:2015-05-28 11:46:41
【问题描述】:

我有一个带有 5 个标签的浏览器。在 viewpager 的每个片段中,我都有一个列表视图,其中填充了我从服务器获取的数据(服务器调用由 AsyncTask 完成)。

我还使用 Fragmentstatepageradapter 来获得最流畅的导航,但是当我从一个具有列表视图的片段导航到另一个具有列表视图的片段时,似乎有些东西无法正常工作。

我想知道为什么,因为数据已经存储了,我希望 viewpager 从堆栈中弹出这些片段。

这是我的适配器:

public class TabsPagerAdapter extends FragmentStatePagerAdapter {

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

    @Override
    public Fragment getItem(int index) {
        switch (index){
            case 0:
               return new Fragment1();
            case 1:
                return new Fragment2();
            case 2:
                return new Fragment3();
            case 3:
                return new Fragment4();
            case 4:
                return new Fragment5();
        }
        return null;
    }

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

经过一番研究,我发现 getItem() 应该始终返回片段的新实例,但我仍然无法顺利存储/恢复状态。 我试过使用myViewPager.setOffscreenPageLimit(4);,它可以提供更好的性能,但标签导航仍然有点滞后。

我是否必须重写 instantiateItem/destroyItem 才能保存片段状态?

【问题讨论】:

    标签: android-fragments android-viewpager fragmentstatepageradapter


    【解决方案1】:

    通过将 ListView 的 layout_height 参数从 wrap_content 更改为 match_parent 解决了问题。

    如果height设置为wrap_content,adapter内部的getView方法会被多次调用,这就是tab间导航慢的原因。

    我希望这会对某人有所帮助,找到答案here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2014-01-17
      • 2013-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多