You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ViewPager报错:addOnAdapterChangeListener无法适配OnPageChangeListener

解决ViewPager中addOnAdapterChangeListener参数不匹配的错误

嘿,这个问题我之前踩过坑!你这明显是把两种完全不同的监听器搞混了,才触发了这个参数不匹配的错误。

错误原因拆解

你调用的addOnAdapterChangeListener()方法,是专门用来监听ViewPager的适配器发生变更(比如替换、设置新的PagerAdapter)的,它要求传入的参数必须是OnAdapterChangeListener类型的实例;但你传进去的是OnPageChangeListener——这是用来监听页面切换、滑动状态变化的监听器,两者的作用完全不搭边,编译器当然会给你报错啦。

分情况解决

根据你的实际需求选对应的方案:

如果你想监听页面切换/滑动(最可能的需求)

别再用addOnAdapterChangeListener()了,换成addOnPageChangeListener()方法,传入OnPageChangeListener实例就行:

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        // 页面滑动过程中的回调逻辑
    }

    @Override
    public void onPageSelected(int position) {
        // 页面被选中时的回调逻辑
    }

    @Override
    public void onPageScrollStateChanged(int state) {
        // 滑动状态改变(比如开始滑动、停止滑动)时的回调逻辑
    }
});

如果你确实要监听适配器的变化

那就要传入正确的OnAdapterChangeListener实例,示例代码:

viewPager.addOnAdapterChangeListener(new ViewPager.OnAdapterChangeListener() {
    @Override
    public void onAdapterChanged(@NonNull ViewPager viewPager, @Nullable PagerAdapter oldAdapter, @Nullable PagerAdapter newAdapter) {
        // 适配器发生替换/更新时的回调,这里可以获取旧适配器和新适配器做相应处理
    }
});

小提醒

如果你项目用的是AndroidX,注意包名是androidx.viewpager.widget.ViewPager,但监听器的对应关系和support包是一致的,别搞错就行。

内容的提问来源于stack exchange,提问作者Antonio Sierra Hurtado

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:28:31