我在我的应用程序的自定义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());
}

这表示如果基础数组中的元素之一是ArrayAdapterNullPointerException将屈服于null

关于android - 自定义ArrayAdapter的getView中的NullpointerException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5572626/

10-12 02:17