¿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; } }); 
  • Desenfocar el fondo del cajón de navegación
  • ¿Cómo reemplazar el icono de la hamburguesa utilizado para ActionBarToggle en la barra de herramientas de Android con una costumbre drawable?
  • Cómo cambiar la lista de color del elemento seleccionado en el cajón de navidgation?
  • Android: Cajón de navegación en múltiples actividades
  • Cambiar el ícono de la hamburguesa del cajón de navegación
  • Color de fondo ondulado de Android
  • Hacer fragmento que se puede hacer clic al abrir el cajón de navegación
  • Adaptador personalizado para cajón de navegación
  • ActionBarCompat + NavigationDrawerFragment no funciona en android 4.0 y 4.1
  • Cómo hacer navegación personalizada ver animaciones como ésta
  • ExpandableListView y el NavigationDrawer
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.