【问题标题】:Page change callback for PagerAdapterPagerAdapter 的页面更改回调
【发布时间】:2013-02-21 23:58:15
【问题描述】:

我正在尝试开发一个应用程序,该应用程序将显示数字 1-10 以及该数字的声音。

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

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

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

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

正如您所料,我是新手,这是我的第一个应用程序。如果需要,我可以粘贴代码。

【问题讨论】:

    标签: android adapter


    【解决方案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(活动或片段)而不是您的适配器的任何地方。

    【讨论】:

    • 非常感谢。我怀疑 setOnPageChangeListener() 是那个,但不确定如何在适配器中使用它。会试试你的方法。
    • 有点不同.. 私有类 MyPagerAdapter 扩展 PagerAdapter 实现 ViewPager.OnPageChangeListener。再次感谢您的帮助。
    • setOnPageChangeListener 已弃用。请改用addOnPageChangeListener
    猜你喜欢
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    相关资源
    最近更新 更多