-3

EDIT : now it works! ArrayAdapter was waiting as third parameter a List object where instead I furnished a String[] that is an Array so does not inherits from String. I am looking for a navigation Drawer that has loaded into the ListView a string List1 on default, then the user can add more lists. Unfortunately I have this error, where no lines of my code are indicated. Examining the stacktrace and the only response vaguely similar I draw the conclusion the error should be here, no the line

String[] provaListaDrawer but I am not sure.

   String[] projection = {" DISTINCT " + UcanContract.Tasks.COLUMN_LIST};
    Cursor cursor=getContentResolver().query(UcanContentProvider.CONTENT_URI,projection,null,null,null);
    String cursorData = DatabaseUtils.dumpCursorToString(cursor);

    ArrayList<String> arrayList = new ArrayList<>();

    while(cursor.moveToNext()) {


        String list = cursor.getString(cursor.getColumnIndexOrThrow(UcanContract.Tasks.COLUMN_LIST));

        arrayList.add(list);


    }
    cursor.close();




    String[] hardCodedList={"ListHardcodedForDebugging"};

    String[] provaListaDrawer = arrayList.toArray(hardcodedList);

    mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_view,  provaListaDrawer));

}

E/AndroidRuntime: FATAL EXCEPTION: main Process: ivano.android.com.ucan, PID: 8856 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:409) at android.widget.ArrayAdapter.getView(ArrayAdapter.java:371) at android.widget.AbsListView.obtainView(AbsListView.java:2363) at android.widget.ListView.makeAndAddView(ListView.java:1970) at android.widget.ListView.fillDown(ListView.java:704) at android.widget.ListView.fillFromTop(ListView.java:765) at android.widget.ListView.layoutChildren(ListView.java:1744) at android.widget.AbsListView.onLayout(AbsListView.java:2162) at android.view.View.layout(View.java:17637) at android.view.ViewGroup.layout(ViewGroup.java:5575) at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:931) at android.view.View.layout(View.java:17637) at android.view.ViewGroup.layout(ViewGroup.java:5575) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at android.view.View.layout(View.java:17637) at android.view.ViewGroup.layout(ViewGroup.java:5575) at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:493) at android.view.View.layout(View.java:17637) at android.view.ViewGroup.layout(ViewGroup.java:5575) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323) at android.widget.FrameLayout.onLayout(FrameLayout.java:261) at com.android.internal.policy.DecorView.onLayout(DecorView.java:726) at android.view.View.layout(View.java:17637) at android.view.ViewGroup.layout(ViewGroup.java:5575) at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2346) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2068) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6337) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874) at android.view.Choreographer.doCallbacks(Choreographer.java:686) at android.view.Choreographer.doFrame(Choreographer.java:621) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

trocchietto
  • 2,388
  • 1
  • 19
  • 33
  • 2
    Possible duplicate of [What is a NullPointerException, and how do I fix it?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – Jens Mar 13 '17 at 13:01
  • 2
    Is your logcat complete? – Mohammed Atif Mar 13 '17 at 14:06
  • 1
    Looks like one of the elements in `provaListaDrawer` is null. Have you checked that? Also, why don't you just pass the `ArrayList` to the `Adapter` directly, instead of creating an array from it? `ArrayAdapter` works with `ArrayList`s, too. – Mike M. Mar 13 '17 at 19:36
  • Mike M. thank you very much, now is working well is exactly as you were saying, basically ArrayAdapter was waiting as third parameter a `List object` where instead I furnished a String[] that is an Array that does not inherit from String. Really a stupid NPE, I will put an Edit 3 to say to refer to the generic NPE post suggested. What was challenging for me is that logcat did not indicatemy class code, but internal API, and this was misleading to me. I learned a lot! Sorry for your time – trocchietto Mar 14 '17 at 21:02

1 Answers1

0

Now it works ArrayAdapter was waiting as third parameter a List object where instead I furnished a String[] that is an Array that does not inherit from String. As Mike M. was suggesting provaListaDrawer is null, but the main point is that I cannot pass a String[] into the ArrayAdapter, I should pass a List<T> object and as suggested ArrayList is perfect because inherit from List.

Basically instead to write:

 String[] temp={"List1"};

String[] provaListaDrawer = arrayList.toArray(temp);

mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_view,  provaListaDrawer));

I had to write:

  ArrayList<String> provaListaDrawer = new ArrayList<>();
    provaListaDrawer.add("List1");

    mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_view,  provaListaDrawer));

And the NPE is avoided when the compile at runtime executes android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:409) finding a valid parameter!

trocchietto
  • 2,388
  • 1
  • 19
  • 33