PagerAdapter的页面更改回调

时间:2013-02-21 23:58:16

标签: android adapter

我正在尝试开发一个应用程序,它会显示数字1-10,并伴随着该数字的声音。

使用mobile.tutsplus中的示例进行水平滑动,我已经达到了一个正确显示所有数字的阶段,但是当我们从1返回时,2的声音将不会出现。 (最初我的活动以1开头)。它也不会出现在10

在解决了12的声音同时出现的上一个问题后,我现在明白将调用instantiateItem()来预取下一个条目。

我想知道我应该在什么时候播放声音?目前,这是在instantiateItem()完成的,这就是为什么我没有听到110的原因。我以为我可以在finishUpdate()中做到这一点,但我看到它被多次调用。

根据培训指南,对于这样的对象集合FragmentStatePagerAdapter应该被使用,我将尝试转向它。但我真的想让这个工作正常。

你已经猜到我是新手,这是我的第一款应用。如果需要,我可以粘贴代码。

1 个答案:

答案 0 :(得分:14)

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(活动或片段)而不是你的适配器。