Vista de cajón de navegación predeterminada a ExpandableListView

En Android Studio 2.1.2, si creo una actividad de navegación predeterminada, obtengo esta vista:

Que utiliza lo siguienteactivity_main.xml archivo:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>

Como puedes ver<android.support.design.widget.NavigationView/>&nbsp;usosapp:menu="@menu/activity_main_drawer"&nbsp;para visualizar la lista de menú definida enactivity_main_drawer.xml&nbsp;archivo de la siguiente manera:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_camera"
            android:icon="@drawable/ic_menu_camera"
            android:title="Import" />
        <item
            android:id="@+id/nav_gallery"
            android:icon="@drawable/ic_menu_gallery"
            android:title="Gallery" />
        <item
            android:id="@+id/nav_slideshow"
            android:icon="@drawable/ic_menu_slideshow"
            android:title="Slideshow" />
        <item
            android:id="@+id/nav_manage"
            android:icon="@drawable/ic_menu_manage"
            android:title="Tools" />
    </group>

    <item android:title="Communicate">
        <menu>
            <item
                android:id="@+id/nav_share"
                android:icon="@drawable/ic_menu_share"
                android:title="Share" />
            <item
                android:id="@+id/nav_send"
                android:icon="@drawable/ic_menu_send"
                android:title="Send" />
        </menu>
    </item>

</menu>

Ahora mi plan es reemplazar esta lista de menú definida enactivity_main_drawer.xml&nbsp;y en su lugar usa unExpandableListView. Porque quiero que mis elementos de menú tengan subcategorías, por ejemplo, elemento de menúCars&nbsp;tendrá subcategoría deDiesel, Petrol&nbsp;yHybrid&nbsp;He investigado y parece que nadie tiene la solución de trabajo exacta que necesito.

Miré aquí

Los tutoriales abiertosImplemente la vista de lista expandible en la actividad del cajón de navegación realizada por Android StudioAndroid: 2 o más ExpandableListView dentro del cajón de navegación¿Cómo crear una lista expandible? Ver dentro del cajón de navegación?

y los enlaces posteriores mencionados allí.

N.B: Los enlaces anteriores mencionan el uso deListView&nbsp;en el cajón de navegación, que ya no es el caso, ya que Android Studio lo logra usandomenu&nbsp;artículo usandoactivity_main_drawer.xml.

¿Puede alguien darme un ejemplo práctico de esto? Para repetir, quiero una vista de lista expandible dentro de la actividad predeterminada del cajón de navegación. He deducido que necesitaré archivos XML y códigos de clase de Java para obtener la base que necesito para comenzar.

Gracias por adelantado. :)

EDITAR: Maqueta de aspecto final (disculpe mis habilidades de photoshop)

Mi enfoque actual es crear un nuevo diseñoex_list&nbsp;como sigue:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
       <ExpandableListView
            android:id="@+id/lvExp"
            android:layout_height="match_parent"
            android:layout_width="match_parent"/>

    </android.support.v4.widget.DrawerLayout>
</LinearLayout>

y editaractivity_main.xml&nbsp;a

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="240dp"
        android:layout_gravity = "start"
        android:layout_height="match_parent"

        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main">
        <include
            layout="@layout/ex_list"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"/>

    </android.support.design.widget.NavigationView>


</android.support.v4.widget.DrawerLayout>

Lo que da como resultado el siguiente diseño:

y mensaje de error de

                                                                      java.lang.IllegalArgumentException: DrawerLayout must be measured with MeasureSpec.EXACTLY.
                                                                          at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1036)
                                                                          at android.view.View.measure(View.java:18788)
                                                                          at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                          at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
                                                                          at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
                                                                          at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
                                                                          at android.view.View.measure(View.java:18788)
                                                                          at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                          at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                          at android.support.design.widget.NavigationView.onMeasure(NavigationView.java:223)
                                                                          at android.view.View.measure(View.java:18788)
                                                                          at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1104)
                                                                          at android.view.View.measure(View.java:18788)
                                                                          at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                          at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                          at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
                                                                          at android.view.View.measure(View.java:18788)
                                                                          at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                          at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
                                                                          at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
                                                                          at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
                                                                          at android.view.View.measure(View.java:18788)
                                                                          at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                          at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                          at android.view.View.measure(View.java:18788)
                                                                          at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                          at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
                                                                          at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
                                                                          at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
                                                                          at android.view.View.measure(View.java:18788)
                                                                          at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
                                                                          at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                                                          at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643)
                                                                          at android.view.View.measure(View.java:18788)
                                                                          at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2100)
                                                                          at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1216)
                                                                          at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1452)
                                                                          at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
                                                                          at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
                                                                          at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
                                                                          at android.view.Choreographer.doCallbacks(Choreographer.java:670)
           ,                                                               at android.view.Choreographer.doFrame(Choreographer.java:606)
                                                                          at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
                                                                          at android.os.Handler.handleCallback(Handler.java:739)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                          at android.os.Looper.loop(Looper.java:148)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

¿Qué estoy haciendo mal?

RESPONDER:

Gracias @Moulesh !!!