Как заставить FragmentStatePagerAdapter начинать с определенного фрагмента из массива 7?На основании дня недели и SWIPE влево и вправо? - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть функция ежедневного планировщика, к которой вы можете получить доступ.Расписание рассчитано на неделю, поэтому каждый фрагмент FragmentStatePagerAdapter соответствует дню.Когда я получаю к нему доступ, он всегда в понедельник, тогда я могу провести пальцем влево и в вторник.Пожалуйста, помогите, я долго искал в интернете!

ПРОБЛЕМА: Как только я узнал день, как мне заставить FragmentStatePagerAdapter начать с фрагмента этого дня и показатьрасписание, которое было заранее разработано для дня?

EX: Если это четверг, то оно открыто ЧТ, тогда я могу провести влево в среду или в пятницу - в пятницу?


public PagerAdapterScheduler (Context context, FragmentManager fm, String[] arrayDayInWeek) {
        super(fm);
        this.mContext = context;
        this.fragmentManager = fm;
        this.arrayDayInWeek = arrayDayInWeek;
    }

@Override
public Fragment getItem(int i) {
    return FragmentDay.newInstance(i, arrayDayInWeek[i]);
}

@Override
public int getCount() {
    return this.arrayDayInWeek.length;
}

Вот экземпляр отдельного фрагмента дня (в другом FragmentDay.class):

public static final FragmentDay newInstance (int dayNumber, String dayLabel)    {
    FragmentDay fragment = new FragmentDay();
    Bundle bundle = new Bundle();
    bundle.putInt( "dayNumber", dayNumber );
    bundle.putString( "dayLabel", dayLabel );
    fragment.setArguments( bundle );
    return fragment;
}

РЕШЕНИЕ:

Спасибодля предложения этого.Я пробовал это раньше, но теперь это работает.Вот загвоздка:

Вам необходимо SET-ADAPTER перед тем, как SET-CURRENT-ITEM:

mViewPager.setAdapter(mPagerAdapterScheduler);
mViewPager.setCurrentItem( Calendar.getInstance().get(Calendar.DAY_OF_WEEK) );

1 Ответ

0 голосов
/ 02 февраля 2019

Просто примените mViewPager.setCurrentItem(yourWeekDay) после настройки вашего ViewPager.

...