Подтвердить что ты не робот

Обратный вызов изменения страницы для PagerAdapter

Я пытаюсь разработать приложение, которое отображает числа 1-10 и вместе с ним звук для этого числа.

Используя пример в mobile.tutsplus для горизонтальной прокрутки, я дошел до стадии, где все цифры отображаются правильно, но звук для 1 не будет появляться, когда мы вернемся с 2. (Сначала это происходит, когда моя активность начинается с 1). И это не придет за 10.

После решения предыдущей проблемы, когда звуки для 1 и 2 появятся сразу, теперь я понимаю, что instantiateItem() будет вызван для предварительной выборки следующей записи.

Я хочу знать, в какой момент я должен играть звук? В настоящее время это делается в instantiateItem(), поэтому я не слышу его для 1 и 10. Я думал, что могу сделать это в finishUpdate(), но я вижу, что он вызывает несколько раз.

В соответствии с учебным пособием для такого набора объектов FragmentStatePagerAdapter следует использовать, и я буду пытаться перейти к этому. Но я бы очень хотел, чтобы это работало правильно.

Как вы догадались, что я новичок, и это мое первое приложение. Я мог бы вставить код, если потребуется.

4b9b3361

Ответ 1

ViewPager имеет метод setOnPageChangeListener(), который позволит вам установить объект, который получает обратный вызов, когда новая страница становится той, которую ищет пользователь.

что-то вроде этого приведет вас к правильному пути:

mPageChangeListener = new OnPageChangeListener() {

    @Override
    public void onPageScrollStateChanged(int arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageSelected(int pos) {
        playSoundForPage(pos);
    }

};
yourViewPager.addOnPageChangeListener(mPageChangeListener);

однако вам придется поместить это в то, что принадлежит вашему ViewPager (активности или фрагменту), а не вашему адаптеру.