安卓 - ViewPager翻页只需布局而非片段

3
有没有一种简单的方式在Android上翻转不同的布局,而不需要使用片段。我的视图是静态的(那里什么都没有发生),但为了本地化目的,我们不会使用图像,因此我会选择布局解决方案。希望提供一个很好的示例展示这个技巧。
编辑:以下是完全工作的代码,基于下面的答案:
public class LayoutPagerAdapter : PagerAdapter
    {
        Context m_context;
        readonly int[] m_slideLayoutResourceIds;

        public LayoutPagerAdapter(Context context, int[] slideLayoutResourceIds)
        {
            m_context = context;
            m_slideLayoutResourceIds = slideLayoutResourceIds;
        }

        public override Java.Lang.Object InstantiateItem(ViewGroup container, int position)
        {
            var inflater = LayoutInflater.From(m_context);

            var view = inflater.Inflate(m_slideLayoutResourceIds[position], container, false);

            container.AddView(view);

            return view;
        }

        public override void DestroyItem(View container, int position, Java.Lang.Object objectValue)
        {
            base.DestroyItem(container, position, objectValue);
        }

        #region implemented abstract members of PagerAdapter

        public override bool IsViewFromObject(View view, Java.Lang.Object objectValue)
        {
            return view == objectValue;
        }

        public override int Count
        {
            get
            {
                return m_slideLayoutResourceIds.Length;
            }
        }

        #endregion
    }

抱歉问一下,为什么不使用片段? - CDrosos
首先,我知道如何处理Fragment。其次,在这种情况下,Fragments涉及编写大量代码,但并没有太多的好处,因为我的视图只是虚拟布局。 - Jakub Holovsky
1个回答

3

你可以为此创建自己的简单适配器:

public static class ViewPagerAdapter extends PagerAdapter {

  private Context mContext;

  public ViewPagerAdapter(Context context) {
    mContext = context;
  }

  @Override
  public View instantiateItem(ViewGroup container, int position) {
    View view = LayoutInflater.from(mContext).inflate(R.layout.your_layout, container, false);

    return view;
  }

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

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

}

我必须将视图添加到容器中才能使其完全工作。我在上面添加了我的示例。 - Jakub Holovsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接