Как инициализировать мой ViewPager - PullRequest
0 голосов
/ 24 мая 2018

У меня есть действие 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 голосов
/ 24 мая 2018

Вам нужно будет получить позицию нажатого элемента, предполагая, что это вид переработчика, вы можете получить позицию, используя этот метод

viewholder.getAdapterPosition()

Далее вам нужно будет пройти эту позицию в ActivityBиспользуя намерение и установите текущий элемент видового пейджера в качестве этой позиции после того, как вы прикрепили адаптер к вашему пейджеру

viewpager.setCurrentItem(position, false)

Мы передаем false, потому что нам не нужна анимация в начале

...