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

Android RecyclerView中插入Banner广告加载失败(错误码1)求助

解决RecyclerView中Banner广告加载失败(错误码1)的问题

嘿,遇到错误码1(INVALID_REQUEST)的话,其实就是广告请求参数出了问题,虽然你确认了AppID正确,但咱们还有几个地方要逐一排查:

  • 先确认AdUnitId是否正确
    你代码里adView.setAdUnitId(con...看起来没写完,首先得确保这个ID是对应Banner广告的、在AdMob后台正确创建的。如果是测试阶段,建议先用谷歌官方提供的测试AdUnitId:ca-app-pub-3940256099942544/6300978111,替换后试试能不能加载,先排除ID本身的问题。

  • 检查AdSize的适配性
    你用了AdSize.BANNER(320x50),要确保RecyclerView列表项的宽度能容纳这个尺寸,不然可能导致请求无效。可以试试换成AdSize.SMART_BANNER,它会根据屏幕尺寸自动调整大小,兼容性更好。

  • 核对View Type的逻辑是否正确
    要确保getItemViewType方法能正确返回AD_TYPE,在你期望的位置插入广告项。比如如果是每隔N个普通项插一个广告,计算位置时要把已插入的广告项数量算进去,避免ViewType判断错误,导致广告View的创建逻辑走歪。

  • 确认AdView的上下文有效
    创建AdView时,尽量用parent.getContext()而不是可能已经销毁的Activity上下文,避免上下文失效导致请求失败。

  • 添加AdListener获取详细错误信息
    光看错误码不够,给AdView加个监听,打印更具体的错误原因:

    adView.setAdListener(new AdListener() {
        @Override
        public void onAdFailedToLoad(LoadAdError adError) {
            super.onAdFailedToLoad(adError);
            Log.e("AdLoadError", "错误码: " + adError.getCode() + ", 详情: " + adError.getMessage());
        }
    });
    
  • 检查Manifest配置是否完整
    确保AndroidManifest.xml里的权限和元数据没写错:

    <!-- 必要的网络权限 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
    <!-- AdMob AppID 元数据,注意name字段不能错 -->
    <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="你的AppID"/>
    

给你一个修正后的代码片段参考:

@Override
public RecyclerViewAdapterMore.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    if (viewType == AD_TYPE) {
        // 使用parent的上下文更安全
        AdView adView = new AdView(parent.getContext());
        // 先测试用官方测试ID
        adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
        adView.setAdSize(AdSize.SMART_BANNER);
        
        // 添加监听查看详细错误
        adView.setAdListener(new AdListener() {
            @Override
            public void onAdFailedToLoad(LoadAdError adError) {
                super.onAdFailedToLoad(adError);
                Log.e("AdLoad", "广告加载失败: " + adError.getCode() + ", 原因: " + adError.getMessage());
            }
        });
        
        // 加载广告请求
        AdRequest adRequest = new AdRequest.Builder().build();
        adView.loadAd(adRequest);
        
        // 返回广告对应的ViewHolder
        return new AdViewHolder(adView);
    } else {
        // 创建普通列表项的ViewHolder
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.your_normal_item_layout, parent, false);
        return new NormalItemViewHolder(itemView);
    }
}

// 自定义广告ViewHolder
static class AdViewHolder extends RecyclerView.ViewHolder {
    public AdViewHolder(AdView adView) {
        super(adView);
    }
}

内容的提问来源于stack exchange,提问作者Rana Pratap

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:29:46