如何初始化我的ViewPager

时间:2018-05-23 21:55:54

标签: android android-viewpager fragmentstatepageradapter

我有一个活动A,其中包含一个列表和一个活动B,它使用一个片段显示活动A中项目的详细信息。活动B中有一个ViewPager,它允许我向左和向右滑动以查看列表中的不同项目详细信息。问题是在何处以及如何初始化活动B以显示我在活动A中单击的项目的详细信息?

下面是我的FragmentStatePagerAdapter类,目前无论我在活动A中点击了哪个项目,它总是启动第一个项目(虽然滑动功能正在运行)

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
        Cursor data;
        ArticleDetailUpdateFragment detailUpdateFragment;

        public ScreenSlidePagerAdapter(FragmentManager fm, Cursor data) {
            super(fm);
            this.data = data;

            detailUpdateFragment = new ArticleDetailUpdateFragment();
            long id = getIntent().getLongExtra(ArticleListActivity.EXTRA_ITEM_ID, -1);
            Log.d(TAG, "the itemId received in detail activity: " + String.valueOf(id));
            detailUpdateFragment.setId(id);

            // Add the fragment to the 'fragment_container' FrameLayout
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.pager, detailUpdateFragment).commit();
        }

        @Override
        public Fragment getItem(int position) {
            detailUpdateFragment = new ArticleDetailUpdateFragment();
            data.moveToPosition(position);
            long id = data.getLong(data.getColumnIndex(ItemsContract.Items._ID));
            detailUpdateFragment.setId(id);

            return detailUpdateFragment;
        }

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

1 个答案:

答案 0 :(得分:0)

您必须获取项目的位置,假设它是回收者视图,您可以使用此方法获取该位置

viewholder.getAdapterPosition()

接下来,您必须使用intent在activityB中传递此位置,并在将适配器连接到viewpager后将viewpager的当前项设置为此位置

viewpager.setCurrentItem(position, false)

我们传入假,因为我们不想在开始时使用动画