I got strange NullPointerException in Crashlytics from some users.
I have Adapter, which is implemented from BaseAdapter:
abstract public class BaseListAdapter<T> extends BaseAdapter {
private final ArrayList<T> items = new ArrayList<T>();
....
@Override
public T getItem(int position) {
return items.get(position);
}
....
}
And concrete class:
class MessagesAdapter extends BaseListAdapter<MessagesListItem> {
....
@Override
public View getView(int position, View view, ViewGroup parent) {
if (view == null)
view = View.inflate(getContext(), R.layout.message_listitem, null);
MessagesListItem item = getItem(position);
NetworkImageView avatar = (NetworkImageView) view.findViewById(R.id.message_listitem_avatar);
ImageView online = (ImageView) view.findViewById(R.id.message_listitem_online);
TextView nick = (TextView) view.findViewById(R.id.message_listitem_nick);
TextView preview = (TextView) view.findViewById(R.id.message_listitem_preview);
TextView unread = (TextView) view.findViewById(R.id.message_listitem_unread);
avatar.setImageUrl(item.userAvatar, MyApp.getInstance().getImageLoader());
online.setVisibility(item.userOnline? View.VISIBLE : View.GONE);
nick.setText(String.format("%s, %d", item.userNick, item.userAge));
preview.setText(item.preview);
unread.setText(String.valueOf(item.unread));
unread.setVisibility(item.unread == 0? View.GONE : View.VISIBLE);
return view;
}
....
}
As you see if I put null into this adapter I for NullPointerException in getView(...) method. But I don't
I have ListView with attached instanced form this concrete class. And I have implemented OnItemClickListener:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Adapter adapter = parent.getAdapter();
MessagesListItem messagesListItem = (MessagesListItem) adapter.getItem(position);
User user = messagesListItem.getUser(); //<-- I got NullPointerException here
....
}
How could this happen? This adapter is wrapped into HeaderViewListAdapter
, but I don't get any class cast exception. Also I didn't get null pointer in getView(). Just on this method.
I see, this issue happen only in android 2. I tried everything and don't reproduce this, bust users still got.
What I miss? Have anyone idea how fix? Or how to determine/reproduce this issue?