¿Cómo implementar el cajón de navegación androide expandible con subitems?

¿Cómo implementar el cajón de navegación de Android como este?

TopLevelView1 ~ TopLevelView4 puede seleccionar y no hay niños
TopVevelView5 puede collaspe

Mi pregunta es que si mi estructura de grupo como este por ejemplo

Todas
Miró fijamente
Categoría
Mp3
—-TXT
—-doc
—- pdf

Cuando selecciono todo entonces mostrar todo el archivo.

Cuando selecciono stared entonces muestre el archivo stared solamente.

Cuando selecciono mp3 entonces sólo muestro archivos mp3.

Y la categoría puede expandirse y contraerse.

Https://developer.android.com/design/media/navigation_drawer_collapse.png

Para la navegación:

  • Alternativa 1:

    Deslizante menú, que sin duda me volvería a ir con. Incluso utilizado por aplicaciones populares como LinkedIn y Foursquare y fácil de implementar y usar. Explicación completa y ejemplos de códigos fuente: SlidingMenu – GitHub

  • Alternativa 2:

    Cajón de navegación de Android. Si desea personalizar completamente todo usted mismo sin utilizar bibliotecas, esta es su opción. Puede comprobar los códigos y cómo hacerlo desde el sitio web de desarrolladores de Android: Creación de un cajón de navegación

Ver dentro de su menú de desplazamiento / deslizante:

  • Alternativa 1:

    Android predeterminado ExpandableListView. Enlaces: Desarrolladores de Android , androidhive

  • Alternativa 2:

    AnimatedExpandableListView, que se implementa desde ExpandableListView, pero cuando se hace clic en un elemento, la expansión se realiza con una animación suave que puede preferir utilizar para una mejor apariencia. AnimatedExpandableListView

Prueba algo así

 <android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" > <FrameLayout android:id="@+id/drawer_list_container" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="start" > <ExpandableListView android:id="@+id/drawer_list" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center"/> </FrameLayout> </android.support.v4.widget.DrawerLayout> 

Código Java:

 drawerListView.setAdapter(new ExpandableListAdapter() { @Override public void unregisterDataSetObserver(DataSetObserver observer) { // TODO Auto-generated method stub } @Override public void registerDataSetObserver(DataSetObserver observer) { // TODO Auto-generated method stub } @Override public void onGroupExpanded(int groupPosition) { // TODO Auto-generated method stub } @Override public void onGroupCollapsed(int groupPosition) { // TODO Auto-generated method stub } @Override public boolean isEmpty() { // TODO Auto-generated method stub return false; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { // TODO Auto-generated method stub return false; } @Override public boolean hasStableIds() { // TODO Auto-generated method stub return true; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { // TODO Auto-generated method stub TextView view = new TextView(getApplicationContext()); view.setText("group " + groupPosition); return view; } @Override public long getGroupId(int groupPosition) { // TODO Auto-generated method stub return groupPosition; } @Override public int getGroupCount() { // TODO Auto-generated method stub return 5; } @Override public Object getGroup(int groupPosition) { // TODO Auto-generated method stub return null; } @Override public long getCombinedGroupId(long groupId) { // TODO Auto-generated method stub return 0; } @Override public long getCombinedChildId(long groupId, long childId) { // TODO Auto-generated method stub return 0; } @Override public int getChildrenCount(int groupPosition) { // TODO Auto-generated method stub return 5; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { TextView view = new TextView(getApplicationContext()); view.setText("child " + groupPosition); return view; } @Override public long getChildId(int groupPosition, int childPosition) { // TODO Auto-generated method stub return childPosition ; } @Override public Object getChild(int groupPosition, int childPosition) { // TODO Auto-generated method stub return null; } @Override public boolean areAllItemsEnabled() { // TODO Auto-generated method stub return false; } }); 
  • Problemas en el uso de nuevo componente de la barra de herramientas, ocultar y mostrar Icono del cajón de navegación, icono de inicio de clic de iconos de fragmentos
  • Cómo cambiar la lista de color del elemento seleccionado en el cajón de navidgation?
  • Android: 2 o más ExpandableListView dentro del Gaveta de navegación
  • Efecto de desplazamiento del menú del cajón de navegación
  • Cajón de navegación con cabeceras / secciones
  • Uso de fragmentos del cajón de navegación para superponer la actividad
  • Android 5.0 - Animar el AppCompat v7 21 icono de inicio de la hamburguesa a la flecha hacia atrás mediante programación
  • No se puede agregar pestañas dentro de Fragmento de cajón de navegación Android
  • Gestor de navegación Android mejores prácticas
  • Cajón de navegación Animación android
  • Prueba de interfaz de usuario de Robotium para la aplicación con el cajón de navegación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.