Nabend!
Ich hab vor ein paar Tagen in eine ListView mit einem CustomArrayAdapter AdMob Banner als Items eingefügt. Das Ganze funktionierte alles auch reibungslos. Nach einem kleinem Wasserschaden, kompletten zerlegtem Galaxy Note, ein wenig Alkohol und einer ROM, funktioniert das nun nicht mehr, wobei davon ausgehe, dass es Anfangs nur Glück war, dass es funktioniert hat....
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if((position % 4) == 0){
if (convertView instanceof AdView && convertView != null) {
// Don’t instantiate new AdView, reuse old one
return convertView;
}
{
// Create a new AdView
AdView adView = new AdView(this.context, AdSize.BANNER,AD_ID);
// Convert the default layout parameters so that they play nice with
// ListView.
float density = context.getResources().getDisplayMetrics().density;
int height = Math.round(AdSize.BANNER.getHeight() * density);
AbsListView.LayoutParams params = new AbsListView.LayoutParams(
AbsListView.LayoutParams.FILL_PARENT,
height);
adView.setLayoutParams(params);
adView.loadAd(new AdRequest());
return adView;
}
}
else{
View row = getView(position, convertView, parent);
NewsItemsHolder newsItemsHolder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
newsItemsHolder = new NewsItemsHolder();
newsItemsHolder.date = (TextView)row.findViewById(R.id.date);
newsItemsHolder.title = (TextView)row.findViewById(R.id.title);
newsItemsHolder.content = (TextView)row.findViewById(R.id.content);
row.setTag(newsItemsHolder);
}
else
{
newsItemsHolder = (NewsItemsHolder)row.getTag();
}
NewsListRSSItems xmlItems = newsListData[position];
newsItemsHolder.date.setText(xmlItems.date);
newsItemsHolder.title.setText(xmlItems.title);
newsItemsHolder.content.setText(xmlItems.content);
return row;
}
}
Alles anzeigen
Bei diesem Code sollte nun an jeder fünften Stelle ein Banner erscheinen, was er auch tut. Aber, ich kann nun nicht mehr Scrollen, da die App mit einer NullPointerException crashed. Erwarte ich 8 ListItems, weil ich dementsprechend ein Array übergebe, so erhalte ich, bei (position % 2) nur noch 4 Items. Ich hatte darauf Anfangs nicht geachtet....
Wie kann ich denn am besten innerhalb meines ArrayAdapters sagen, dass zb an jeder 10. Stelle ein Banner erscheinen soll, dafür aber kein ListItem einsparen? Daran wird es ja wohl liegen, dass die App beim Scrollen crashed....
Den Code, um Banner als ListItem zu setzen habe ich von googleadsdeveloper.blogspot.de
Dort holen die sich aber die View anstelle von normal convertView über
was bei mir aber auch eine NullPointerException auswirft...
Jemand eine Idee? Stehe mal wieder auf dem Schlauch....(Immer bei den scheinbar einfachsten Sachen...)