Intereting Posts
Set Прозрачный фон для alertdialog в android Обрезать изображение после выбора области с использованием обнаружения края в android Что (?! A) {0}? Означает в регулярном выражении Java? Используя Eclipse для androidSDK, когда я иду, я запускаю раздел WARNING: Data, который уже используется. Изменения не будут сохраняться! Использование @string для android: полномочия в ContentProvider InterruptedIOException при использовании Retrofit2 с rx при retryOn Не переносите текст в Android TextView в аббревиатуре периода GetActionBar () не определено Как создать диалоговые окна загрузки в Android? Проблемы с Android XML Editor и Eclipse … Трудно вручную редактировать XML Android: Как создать настраиваемое текстовое окно редактирования, подобное этому? Как выводить сообщения на консоль Eclipse при разработке для Android Android 2.2 MediaPlayer отлично работает с одним URL-адресом SHOUTcast, но не с другим Android – декларативный и программный интерфейс Ошибка Android – close () никогда не вызывалось явным образом в базе данных

Помещение собственного объявления AdMob в listView

Я хотел бы использовать новые функциональные возможности AdMob в своем приложении. Я хочу поместить собственное объявление в списокView, где каждый 20-й элемент или около того в списке является объявлением. Можно ли достичь этого с помощью объявления для мобильных устройств? Или мне нужно использовать расширенное объявление Natve?

Solutions Collecting From Web of "Помещение собственного объявления AdMob в listView"

Подходом является расширение BaseAdapter и создание собственного адаптера вместо использования ArrayAdapter по умолчанию. Затем вам нужно вернуть «Ad» View вместо обычного обычного представления, когда вы хотите отображать объявление. Это означает, что вам нужно переопределить getCount (), чтобы вернуть больше строк (например, если у вас есть 10 строк, это означает, что вам нужно вернуть 11 = 10 фактического контента + 1 объявление)

Затем вам нужно решить, в какой позиции для создания этого представления, я думаю, вы можете сделать это, просто проверив переменную положения:

if (position == VALUE) { // Create and return Ad View } else { // Create and return a normal View } 

Надеюсь, поможет. Я нашел это как можно лучше, пока не надеюсь найти лучший оптимизированный способ для этого

Ну @ Jagjit показал правильный подход. Я напишу его шаг за шагом
1. Создайте свой собственный адаптер (путем расширения BaseAdapter ), который будет отображаться как элементы списка
2. Создайте другой файл ресурсов макета для отображения собственного объявления (дизайн должен быть похож на пользовательский адаптер, созданный на предыдущем шаге)
3. В методе getView сделайте следующее (для показа объявления на 2-й позиции)

 if (position == 1) { rowView = inflater.inflate(R.layout.native_ad_adapter, null); NativeExpressAdView adView = (NativeExpressAdView)rowView.findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); adView.loadAd(adRequest); } else { rowView = inflater.inflate(R.layout.my_custom_list, null); TextView bigtxt = (TextView) rowView.findViewById(R.id.txt1); ... ... } 

Здесь ваш пользовательский адаптер – my_custom_list
Вы увидите, что объявления загружаются. Но есть небольшая проблема, фактический элемент списка в позиции 1 не будет показан.
4. Для этого добавьте дополнительный элемент в список перед ListView . Я использовал ArrayList чтобы я мог сделать это легко. Мой подход выглядит следующим образом

 arrayList1.add(1,"ad here"); listview1.setAdapter(new MyAdapter(callerView.getContext(), arrayList1.toArray(new String[arrayList1.size()]))); 

Вам необходимо создать собственный пользовательский список и пользовательский адаптер.

  1. Создайте вид прокрутки и LinearLayout как дочерний
  2. Создайте свой шаблон в виде XML-макета, который будет обрабатывать ваш контент.
  3. Создайте класс, который будет в Inflat вашего макета для LinearLayout В ScrollView . Как это :

     private static void CreateIntemEmptty(Context context, ViewGroup view) { LayoutInflater inflater = (LayoutInflater) Home.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View child = inflater.inflate(R.layout.empty, null); ViewGroup Prnt =(ViewGroup)view.getParent().getParent(); Prnt.removeViewInLayout((View)view.getParent()); ViewGroup.LayoutParams p =new ViewGroup.LayoutParams(Prnt.getWidth(),Prnt.getHeight()); Prnt.addView(child,p); } 

    В этом коде я создаю пустой элемент и добавляю его

  4. Вы можете добавить ADS в LinearLayout в качестве ребенка.

Я предполагаю, что Admobadapter lib – это то, что вы ищете … он обертывает ваш адаптер, чтобы автоматически извлекать и показывать рекламные блоки в каждом элементе X в вашем списке или recyclerview. Вы просто делаете это следующим образом: 1. установите обертку подходящего типа (в основном, 4 обертки – для списка, для повторного просмотра, чтобы показать расширенные объявления и 2 для экспресс-объявлений). 2. Внесите свой адаптер в обертку. 3. введите Wrapper to listview / recyclerview 4. заполните ваш адаптер своими данными, поднимите onDataSetChanged (), тогда обертка сделает сам материал.

Также он поддерживает собственные объявления Express и расширенные собственные объявления. Согласно этой проблеме они собираются добавить поддержку Maven / Gradle в ближайшее время. Удачи!