ViewPager保存并检索所选页面

时间:2015-07-09 08:14:01

标签: android android-viewpager android-recyclerview

我有一个ViewPager嵌套在RecyclerView个项目中,我需要ViewPager来记住用户选择的最后一页。

当我滚动到最后一个项目然后回到第一个项目时,ViewPager位置被"泄露"到ViewPager个项目的其他RecyclerView 请参阅下面的GIF:

enter image description here

我在Github上针对此问题制作了一个示例项目: https://github.com/alaouiali/BnbRecyclerView

现在代码! 首先,这是我用来填充RecyclerView的示例对象,我使用position变量来保存用户最后选择的页面。

    public class ParentItem {
          String text;
          int position; //-- Here we save the ViewPager selected page

          public ParentItem(String text) {
              this.text = text;
              this.position = 0;
           }

          public String getText() {
              return text;
          }

          public int getPosition() {
              return position;
          }
          public void setPosition(int pos) {
              this.position = pos;
        }
    }

以下是RecyclerView.Adapter

    public VerticalAdapter(Context context, List<ParentItem> myDataset, int appWidth) {
          mDataset = myDataset;
          mContext = context;
          mAppWidth = appWidth;

       }

    @Override
    public void onBindViewHolder(ViewHolder holder, final int position) {

    holder.mViewPager.setCurrentItem(mDataset.get(position).getPosition());
    holder.mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int positionPager) {
            mDataset.get(position).setPosition(positionPager);
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });
}

0 个答案:

没有答案