如何初始化我的 ViewPager
How to initialize my ViewPager
我有一个 Activity A,其中包含一个列表和一个 Activity B,它使用片段显示 activity A 中的项目的详细信息。 Activity B中有一个ViewPager,可以让我左右滑动查看列表中的不同项目详情。问题是在哪里以及如何初始化 Activity B 以显示我在 Activity A 中单击的项目的详细信息?
下面是我的 FragmentStatePagerAdapter class,目前无论我在 activity 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;
}
}
你需要获取被点击的item的位置,假设是recycler view,你可以使用这个方法获取位置
viewholder.getAdapterPosition()
接下来,您必须使用 intent 在 activityB 中传递此位置,并在将适配器附加到您的 viewpager 后将 viewpager 的当前项目设置为此位置
viewpager.setCurrentItem(position, false)
我们传入 false 因为我们一开始不想动画
我有一个 Activity A,其中包含一个列表和一个 Activity B,它使用片段显示 activity A 中的项目的详细信息。 Activity B中有一个ViewPager,可以让我左右滑动查看列表中的不同项目详情。问题是在哪里以及如何初始化 Activity B 以显示我在 Activity A 中单击的项目的详细信息?
下面是我的 FragmentStatePagerAdapter class,目前无论我在 activity 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;
}
}
你需要获取被点击的item的位置,假设是recycler view,你可以使用这个方法获取位置
viewholder.getAdapterPosition()
接下来,您必须使用 intent 在 activityB 中传递此位置,并在将适配器附加到您的 viewpager 后将 viewpager 的当前项目设置为此位置
viewpager.setCurrentItem(position, false)
我们传入 false 因为我们一开始不想动画