Search code examples
javaandroidandroid-fragmentsandroid-listviewandroid-arrayadapter

Nothing is null but I am still getting a null pointer exception


Inside my fragment convertView is null so I set it to a new view. I then print out everything about to be sent into super.getView() to see any of it is null. But I am still getting a nullpointerexception on

view = super.getView(position, convertView, parent);

code:

    listView.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, R.id.textView1, list.items)
            {
                @Override
                public View getView(final int position, View convertView, ViewGroup parent)
                {
                    View view;
                    if (convertView == null)
                    {
                        System.err.println("convertView was null... updating");
                        LayoutInflater infl = getActivity().getLayoutInflater();
                        convertView = infl.inflate(android.R.layout.simple_list_item_1, parent, false);
                    }
                    System.out.println(position + "\n" + convertView + "\n" + parent);
                    view = super.getView(position, convertView, parent);
                    String entry = list.items.get(position);
                    TextView text1 = (TextView) view.findViewById(R.id.textView1);
                    text1.setText(entry);
                    return view;
                }
            });
    return view;

Values of position, convertView, and parent:

05-20 16:32:57.760: I/System.out(18373): 0
05-20 16:32:57.760: I/System.out(18373): android.widget.TextView{42caa628 V.ED....     ......I. 0,0-0,0 #1020014 android:id/text1}
05-20 16:32:57.760: I/System.out(18373): android.widget.ListView{42c32a68 VFED.VC. ......ID 0,88-1080,1442 #7f080004 app:id/list}

Is there anything I can change to fix/improve this? Thanks in advance.

Additional code and information will be provided per request.

Full logcat:

05-20 16:45:26.360: D/dalvikvm(22735): Late-enabling CheckJNI
05-20 16:45:26.580: D/dalvikvm(22735): JIT code cache reset in 0 ms (0 bytes 7/0)
05-20 16:45:26.580: D/dalvikvm(22735): GC_FOR_ALLOC freed 451K, 3% free 22716K/23216K, paused 27ms, total 27ms
05-20 16:45:26.650: D/dalvikvm(22735): JIT code cache reset in 0 ms (0 bytes 8/0)
05-20 16:45:26.650: D/dalvikvm(22735): GC_FOR_ALLOC freed 496K, 3% free 22727K/23276K, paused 24ms, total 24ms
05-20 16:45:26.710: D/dalvikvm(22735): GC_FOR_ALLOC freed 512K, 3% free 22728K/23288K, paused 20ms, total 20ms
05-20 16:45:26.760: D/dalvikvm(22735): GC_FOR_ALLOC freed 501K, 3% free 22737K/23288K, paused 19ms, total 19ms
05-20 16:45:26.760: I/System.out(22735): FamilyLists
05-20 16:45:26.790: D/dalvikvm(22735): GC_FOR_ALLOC freed 71K, 3% free 22769K/23288K, paused 21ms, total 21ms
05-20 16:45:26.820: D/dalvikvm(22735): GC_FOR_ALLOC freed <1K, 3% free 22790K/23288K, paused 24ms, total 24ms
05-20 16:45:26.820: I/dalvikvm-heap(22735): Grow heap (frag case) to 22.380MB for 82960-byte allocation
05-20 16:45:26.840: D/dalvikvm(22735): GC_FOR_ALLOC freed <1K, 3% free 22871K/23372K, paused 21ms, total 21ms
05-20 16:45:26.870: D/dalvikvm(22735): GC_FOR_ALLOC freed 43K, 3% free 22895K/23372K, paused 18ms, total 18ms
05-20 16:45:26.910: D/dalvikvm(22735): GC_FOR_ALLOC freed 107K, 3% free 22936K/23456K, paused 20ms, total 20ms
05-20 16:45:26.950: I/Adreno-EGL(22735): <qeglDrvAPI_eglInitialize:320>: EGL 1.4 QUALCOMM Build: I0404c4692afb8623f95c43aeb6d5e13ed4b30ddbDate: 11/06/13
05-20 16:45:26.970: D/OpenGLRenderer(22735): Enabling debug mode 0
05-20 16:45:26.980: W/System.err(22735): convertView was null... updating
05-20 16:45:26.980: I/System.out(22735): 0
05-20 16:45:26.980: I/System.out(22735): android.widget.TextView{42c9e3b8 V.ED.... ......I. 0,0-0,0 #1020014 android:id/text1}
05-20 16:45:26.980: I/System.out(22735): android.widget.ListView{42c4bbc8 VFED.VC. ......ID 0,88-1080,1442 #7f080004 app:id/list}
05-20 16:45:26.980: D/AndroidRuntime(22735): Shutting down VM
05-20 16:45:26.980: W/dalvikvm(22735): threadid=1: thread exiting with uncaught exception (group=0x41613ba8)
05-20 16:45:26.980: E/AndroidRuntime(22735): FATAL EXCEPTION: main
05-20 16:45:26.980: E/AndroidRuntime(22735): Process: com.mail929.android.familylists, PID: 22735
05-20 16:45:26.980: E/AndroidRuntime(22735): java.lang.NullPointerException
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:392)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at com.mail929.android.familylists.ListFragment$2.getView(ListFragment.java:59)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.widget.AbsListView.obtainView(AbsListView.java:2263)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.widget.ListView.makeAndAddView(ListView.java:1790)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.widget.ListView.fillDown(ListView.java:691)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.widget.ListView.fillFromTop(ListView.java:752)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.widget.ListView.layoutChildren(ListView.java:1630)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.widget.AbsListView.onLayout(AbsListView.java:2091)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.View.layout(View.java:14817)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.ViewGroup.layout(ViewGroup.java:4631)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1055)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.View.layout(View.java:14817)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.ViewGroup.layout(ViewGroup.java:4631)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.View.layout(View.java:14817)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.ViewGroup.layout(ViewGroup.java:4631)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:743)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.View.layout(View.java:14817)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.ViewGroup.layout(ViewGroup.java:4631)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.View.layout(View.java:14817)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.ViewGroup.layout(ViewGroup.java:4631)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:374)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.View.layout(View.java:14817)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.ViewGroup.layout(ViewGroup.java:4631)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.View.layout(View.java:14817)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.ViewGroup.layout(ViewGroup.java:4631)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1987)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1744)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5670)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.Choreographer.doCallbacks(Choreographer.java:574)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.Choreographer.doFrame(Choreographer.java:544)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.os.Handler.handleCallback(Handler.java:733)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.os.Handler.dispatchMessage(Handler.java:95)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.os.Looper.loop(Looper.java:136)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at android.app.ActivityThread.main(ActivityThread.java:5017)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at java.lang.reflect.Method.invokeNative(Native Method)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at java.lang.reflect.Method.invoke(Method.java:515)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
05-20 16:45:26.980: E/AndroidRuntime(22735):    at dalvik.system.NativeStart.main(Native Method)

Solution

  • You are using android.R.layout.simple_list_item_1 which has TextView whose id is android.R.id.text1, not R.id.textView1 source.

    Try the following code and please understand the working of Adapter. Lot of stuff on ListView and custom Adapter is available on Internet:

    listView.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1, list.items)
                {
                    @Override
                    public View getView(final int position, View convertView, ViewGroup parent)
                    {
                        View view = super.getView(position, convertView, parent);
                        String entry = list.items.get(position);
                        TextView text1 = (TextView) view.findViewById(android.R.id.text1);
                        text1.setText(entry);
                        return view;
                    }
                });