2012-05-31 2 views
1

IM пытается установить admob AdView в ListView с помощью ArrayAdapter. В настоящее время он загружается нормально, и объявление отображается в списке. Когда я прокручиваю, и когда строка, содержащая объявление, не отображается, приложение зависает. Я полагаю, что удаление рекламного объявления вызывает некоторые проблемы. Есть ли способ предотвратить это? Или есть способ обнаружить, когда строка удаляется из списка? Или еще лучше, есть ли способ, чтобы строка не очищалась от списка и сохранялась?ArrayAdapter с admob adview ListView Crash

вот что я имею в адаптере 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; 
} 

затмение дает мне: NullPopinterException на изображении ниже enter image description here

Примечание: это работает, но вызывает надстройку для удаления перезагружается каждый время гаснет экран:

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

Вы хотите разместить блок AdMob в каждой строке? Отправьте исключение, которое вы получите в logcat. – Luksprog

+0

Да, я хочу добавить блок admob в строку. остальные будут регулярными значками w. – yeahdixon

ответ

2

FYI, условия AdMob требуют, что только 1 AdView может присутствовать на экране в то время, поэтому будьте осторожны, чтобы вы не добавляли AdView к каждому элементу списка.

С учетом сказанного здесь представлен пример с открытым исходным кодом ListView adapter, и это calling code, в котором показано, как встраивать объявления AdMob в каждый элемент X. Сам адаптер является оберткой вокруг другого объекта-адаптера, но включает рекламу с заданным интервалом. Вы можете передать свой ArrayAdapter на этот адаптер, и он разместит объявления для вас.

+0

спасибо, что вы отправили мне ссылку несколькими способами. основная проблема заключается в настройке: getViewTypeCount() // нужно установить два разных типа строк, а public int getItemViewType (int position) устанавливает тип, в котором строка – yeahdixon

0

Просьба взглянуть на answer. admobadapter реализует класс AdmobFetcher, который предварительно загружает и сохраняет рекламные блоки по каждой позиции в списке. Он предотвращает просмотр списка при замораживании при извлечении рекламных блоков и прокрутке.

Смежные вопросы