1

ArrayAdapterを介してAdMobAdViewをListViewに入れようとしているIM。現在、正常に読み込まれ、広告は期待どおりにリストビューに表示されます。スクロールすると、広告を含む行が表示されなくなると、アプリがフリーズします。adviewの削除が問題を引き起こしていると思います。これを防ぐ方法はありますか?または、行がリストビューから削除されていることを検出する方法はありますか?または、行がリストビューからクリアされずに保持される方法はありますか?

これが私がアダプターgetViewメソッドに持っているものです:

public View getView(int position, View convertView, ViewGroup parent) {

    View row = convertView;


    ChapterModel chapter = getItem(position);


        LinearLayout L;
        if (row == null) {
            LayoutInflater inflater = (LayoutInflater) this.getContext()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = inflater.inflate(R.layout.chapter_listview_ad, parent, false);

         }

            AdRequest request = new AdRequest();
            AdView adView;
            L=(LinearLayout) row.findViewById(R.id.chapter_row_layout);
                                        adView= new AdView((Activity) this.context,new AdSize(768,90), ADDID);


                adView.setAdListener(this);
                adView.loadAd(request);

                L.addView(adView); 
                 return row;
}

eclipseは私に与えます:下の画像のNullPopinterExceptionここに画像の説明を入力してください

注:これは機能しますが、画面から消えるたびに追加が削除され、再ロードされます。

public int getItemViewType(int position) {
     // Don't let ListView try to reuse the views.
     return AdapterView.ITEM_VIEW_TYPE_IGNORE;
 }
4

2 に答える 2

2

参考までに、AdMobの規約では、一度に1つのAdViewのみを画面に表示できる必要があるため、すべてのリストアイテムにAdViewを追加しないように注意してください。

そうは言っても、これはListViewアダプターの優れたオープンソースの例であり、すべてのXアイテムにAdMob広告を埋め込む方法を示す呼び出しコードです。アダプタ自体は別のアダプタオブジェクトのラッパーですが、指定された間隔で広告を埋め込みます。ArrayAdapterをこのアダプターに渡すと、広告が表示されます。

于 2012-06-01T18:23:10.923 に答える
0

答えを見てください。admobadapterは、リスト内の位置ごとに広告ブロックをプリフェッチして保存するAdmobFetcherクラスを実装します広告ブロックの取得とスクロール中にリストがフリーズするのを防ぎます。

于 2016-08-08T12:36:20.120 に答える