首页 > 解决方案 > 在 ViewPager Android 中添加超过 2 个不同的视图

问题描述

是否可以在 viewpager 中添加超过 2 个视图?我将此代码添加到 Main.class:

viewPager = findViewById(R.id.viewpager);

AdapterPage adapterPage = new AdapterPage();

adapterPage.insertViewId(R.id.page_one);
adapterPage.insertViewId(R.id.page_two);
adapterPage.insertViewId(R.id.page_three);

viewPager.setAdapter(adapterPage);

PagerAdapter 类:

public class AdapterPage extends PagerAdapter {
    private List<Integer> pageIds = new ArrayList<>();

    public void insertViewId(@IdRes int pageId) {
        pageIds.add(pageId);
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        return container.findViewById(pageIds.get(position));
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }

    @Override
    public int getCount() {
        return pageIds.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }
}

xml:

<androidx.viewpager.widget.ViewPager
                    android:id="@+id/viewpager"
                    android:layout_width="match_parent"
                    android:layout_height="500dp">

                    <include
                        android:id="@+id/page_one"
                        layout="@layout/detail1" />

                    <include
                        android:id="@+id/page_two"
                        layout="@layout/detail2" />

                    <include
                        android:id="@+id/page_three"
                        layout="@layout/detail3" />

                </androidx.viewpager.widget.ViewPager>

此代码有效,但问题是..

  1. 当我滑动/滑动到名为page_three / detail3 布局的最后一页时(在这种情况下,我添加了 3 个不同的布局),加载布局需要更长的时间。
  2. 当我滑动/滑动回到第一页/ page_one时,布局消失了。

这种情况下是否有任何图书馆或其他观点?谢谢。

标签: androidandroid-viewpager

解决方案


尝试instantiateItem根据position. ViewPager 仅将页面 n+1 和 n-1 保存到其中 n 是实际页面的位置,这就是为什么您的第 3 页总是消失的原因。


推荐阅读