我在Crashlytics中從一些用戶那裏得到了奇怪的NullPointerException。怎麼可能點擊ListView中的空項目?
我有適配器,它是從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);
}
....
}
與混凝土類:
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;
}
....
}
正如你看到的,如果我把空到該適配器爲我在的NullPointerException getView(.. 。) 方法。但我不
我有ListView與附加的實例形式這個具體的類。我實施了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
....
}
這怎麼會發生?這個適配器被包裝到HeaderViewListAdapter
,但我沒有得到任何類拋出異常。我也沒有在getView()中獲得空指針。就在這個方法上。
我看到,這個問題只發生在android 2.我嘗試了一切,並沒有重現這一點,胸圍用戶仍然得到。
我想念什麼?有誰知道如何修復?或者如何確定/重現這個問題?
我已經使用'listView.addHeaderView(視圖, null,false)'但用戶仍然可以點擊標題。也許這是來自android的錯誤。 – neworld
你有沒有使用addFooterView(view)的頁腳?否則,是否有可能改變支持數組的列表而不調用notifyDataSetChanged(orInvalidated) – FunkTheMonk
我的頁腳也一樣。我不考慮你的下一個問題,因爲'ArrayList'更新拋出了異常或'getView()'拋出空指針,但是我一直只在'OnItemClickListener'中得到。 – neworld