我在我的应用程序的自定义ArrayAdapter中得到了Nullpointerexception。我不知道为什么在这里引发Nullpointer。而且我无法重现此异常。异常没有出现很长时间,而且我没有代码更改,因此这使它更加奇怪。
代码是:
private class MyAdapter<T> extends ArrayAdapter<String> {
private Map<String, String> selectedDevices;
public MyAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
BluetoothDbAdapter dbHelper = new BluetoothDbAdapter(context);
dbHelper.open();
selectedDevices = dbHelper.fetchAllDevicesAsMap();
dbHelper.close();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
CheckedTextView item = (CheckedTextView) view;
CharSequence text = item.getText();
if (selectedDevices.values().contains(text)) {
item.setChecked(true);
}
return item;
}
}
第一行的getView方法中引发了异常。我已经调试了我的App,并使用空参数调用了super.getView,但是没有引发Nullpointerexception,所以看来super一直是空的,但是怎么可能呢? StackTrace是:
有谁知道我该如何解决这个问题?感谢帮助!!!
最佳答案
您可能正在使用add
值调用null
,而ArrayAdapter
对此感到窒息。为了进一步诊断问题,我们需要查看fetchAllDevicesAsMap
的代码,或者您要在ArrayAdapter
中添加元素的任何位置。createViewFromResource
中的ArrayAdapter.java的摘录:
T item = getItem(position);
if (item instanceof CharSequence) {
text.setText((CharSequence)item);
} else {
text.setText(item.toString());
}
这表示如果基础数组中的元素之一是
ArrayAdapter
,NullPointerException
将屈服于null
。关于android - 自定义ArrayAdapter的getView中的NullpointerException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5572626/