Nullpointerexception in getView of custom ArrayAdapter
我的应用程序中的自定义ArrayAdapter中出现了Nullpointerexception。 我不知道为什么在这里提出Nullpointer。 我无法重现这个例外。 异常没有出现很长时间,我没有代码更改,所以这使它更奇怪。
代码是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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方法中引发了异常。 我调试了我的应用程序并使用null参数调用了super.getView,但没有引发Nullpointerexception,所以它看起来super已经为null,但是怎么会这样? StackTrace是:
java.lang.NullPointerException
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
at de.hartig.abt.activity.BluetoothDeviceList$MyAdapter.getView(BluetoothDeviceList.java:140)
at android.widget.AbsListView.obtainView(AbsListView.java:1408)
at android.widget.ListView.makeAndAddView(ListView.java:1727)
at android.widget.ListView.fillDown(ListView.java:652)
at android.widget.ListView.fillFromTop(ListView.java:709)
at android.widget.ListView.layoutChildren(ListView.java:1580)
at android.widget.AbsListView.onLayout(AbsListView.java:1240)
at android.view.View.layout(View.java:7057)
at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
at android.view.View.layout(View.java:7057)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
at android.view.View.layout(View.java:7057)
at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
at android.view.View.layout(View.java:7057)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4680)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
有没有人知道我怎么能解决这个问题? 感谢帮助!!!
您可能正在使用
来自
1 2 3 4 5 6 | T item = getItem(position); if (item instanceof CharSequence) { text.setText((CharSequence)item); } else { text.setText(item.toString()); } |
这表明如果底层数组中的一个元素是
从堆栈跟踪中,您可以清楚地看到
您可以查看
UPDATE
我看了一眼代码,它在这行
您可以在这里查看代码:
android.widget.ArrayAdapter源码