IM пытается добавить admView AdView в ListView с помощью ArrayAdapter. В настоящее время он загружается нормально, и объявление отображается в списке. Когда я прокручиваю, и когда строка, содержащая объявление, не отображается, приложение зависает. Я полагаю, что удаление рекламного объявления вызывает некоторые проблемы. Есть ли способ предотвратить это? Или есть способ обнаружить, когда строка удаляется из списка? Или еще лучше, есть ли способ, чтобы строка не очищалась от списка и сохранялась?
вот что я имею в адаптере getView Method:
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;
}
FYI, условия AdMob требуют, чтобы на экране одновременно присутствовало только 1 AdView, поэтому будьте осторожны, чтобы вы не добавляли AdView к каждому элементу списка.
С учетом сказанного, вот отличный пример с открытым исходным кодом адаптера ListView и вызывающий код, который показывает, как встраивать объявления AdMob в каждый элемент X. Сам адаптер является оберткой вокруг другого объекта-адаптера, но включает рекламу с заданным интервалом. Вы можете передать свой ArrayAdapter на этот адаптер, и он разместит объявления для вас.
Пожалуйста, взгляните на ответ. Admobadapter реализует класс AdmobFetcher, который предварительно загружает и сохраняет рекламные блоки по каждой позиции в списке. Он предотвращает просмотр списка при замораживании при извлечении рекламных блоков и прокрутке.