The null pointer is thrown after 1 cycle of getView. ie the first element on the list is returned fine but it crashes on the second one.
it says holder is null. refering to the holder.textName.setText(station) bit.
Any idea why?
...
static class StationHolder {
TextView textName;
ImageView imgStationImage;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
StationHolder holder = null;
Typeface tfBoldCon = Typeface.createFromAsset(context.getAssets(),
"Roboto-BoldCondensed.ttf");
Typeface tfCon = Typeface.createFromAsset(context.getAssets(),
"Roboto-Condensed.ttf");
Typeface tfLight = Typeface.createFromAsset(context.getAssets(),
"Roboto-Light.ttf");
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(viewResourceId, parent, false);
holder = new StationHolder();
holder.textName = (TextView) row.findViewById(R.id.station_name);
holder.textName.setTypeface(tfCon);
holder.imgStationImage = (ImageView) row
.findViewById(R.id.station_image);
} else {
holder = (StationHolder) row.getTag();
}
final String station = stations.get(position);
Log.i("", station);
if (station != null) {
holder.textName.setText(station);
}
return row;
}
You forgot
after inflating the row and setting the holder values.
This way, when you reuse the row.tag it is set to null.