Intereting Posts
Не удалось найти метод release () для аргументов Привязка данных Android, не может генерировать связующие объекты Android getDefaultSharedPreferences Джексон, десериализирующийся с пользовательским десериализатором, вызывает много вызовов GC и занимает намного больше времени Как издеваться над SharedPreferences с помощью Mockito Анимация с фрагментами не воспроизводится RecyclerView получает сбой при использовании notifyItemChanged из обработчика с использованием Runnable Полный список всех вариантов Android project.properties Как долго связки сохраняются SyncManager? Android Canvas, несколько путей с различными значениями масштабирования Нажмите на уведомление GCM, не открывая желаемую активность в Android Kitkat Событие OnClick работает только второй раз на edittext Изменение цвета TextView в фокусе / нажмите Crosswalk Cordova – js alert показывает символы блока на китайском интерфейсе android Запуск Eclipse висит, «Android SDK: устранение маркеров ошибок»

Помещение собственного объявления 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 в ближайшее время. Удачи!