Обратный вызов изменения страницы для PagerAdapter
Я пытаюсь разработать приложение, которое отображает числа 1-10 и вместе с ним звук для этого числа.
Используя пример в mobile.tutsplus для горизонтальной прокрутки, я дошел до стадии, где все цифры отображаются правильно, но звук для 1
не будет появляться, когда мы вернемся с 2
. (Сначала это происходит, когда моя активность начинается с 1
). И это не придет за 10
.
После решения предыдущей проблемы, когда звуки для 1
и 2
появятся сразу, теперь я понимаю, что instantiateItem()
будет вызван для предварительной выборки следующей записи.
Я хочу знать, в какой момент я должен играть звук? В настоящее время это делается в instantiateItem()
, поэтому я не слышу его для 1
и 10
. Я думал, что могу сделать это в finishUpdate()
, но я вижу, что он вызывает несколько раз.
В соответствии с учебным пособием для такого набора объектов FragmentStatePagerAdapter
следует использовать, и я буду пытаться перейти к этому. Но я бы очень хотел, чтобы это работало правильно.
Как вы догадались, что я новичок, и это мое первое приложение. Я мог бы вставить код, если потребуется.
Ответы
Ответ 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 (активности или фрагменту), а не вашему адаптеру.