document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. package com.ellunardeketa.miguelmorales.navigationdrawerexplist;
  2.  
  3. import android.annotation.TargetApi;
  4. import android.app.ExpandableListActivity;
  5. import android.app.Fragment;
  6. import android.app.FragmentManager;
  7. import android.content.res.Configuration;
  8. import android.os.Build;
  9. import android.support.v4.widget.DrawerLayout;
  10. import android.support.v7.app.ActionBarActivity;
  11. import android.os.Bundle;
  12. import android.support.v7.app.ActionBarDrawerToggle;
  13. import android.support.v7.widget.Toolbar;
  14. import android.util.Log;
  15. import android.view.Gravity;
  16. import android.view.KeyEvent;
  17. import android.view.Menu;
  18. import android.view.MenuItem;
  19. import android.view.View;
  20. import android.widget.ExpandableListView;
  21. import android.widget.Toast;
  22.  
  23. import java.util.ArrayList;
  24. import java.util.HashMap;
  25. import java.util.List;
  26.  
  27.  
  28. public class MainActivity extends ActionBarActivity {
  29.  
  30.     private Toolbar toolbar;//Cajón de navegación para icono animado estilo Play Store
  31.     private DrawerLayout mDrawerLayout;
  32.     private ExpandableListView mDrawerExpandableList;
  33.     private ActionBarDrawerToggle mDrawerToggle;
  34.  
  35.     private CharSequence mDrawerTitle;
  36.     private CharSequence mTitle;
  37.  
  38.     private List<String> grupos;
  39.     private HashMap<String, List<String>> datosGrupos;
  40.     private int ultimaPosicionExpList = -1;
  41.     private MyAdapter adapter;
  42.  
  43.     @Override
  44.     protected void onCreate(Bundle savedInstanceState) {
  45.         super.onCreate(savedInstanceState);
  46.         setContentView(R.layout.activity_main);
  47.  
  48.         mDrawerTitle = getTitle();
  49.  
  50.         toolbar = (Toolbar) findViewById(R.id.toolbar);//Añadimos include en activity_main y estilo en styles
  51.         mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
  52.         mDrawerExpandableList = (ExpandableListView) findViewById(R.id.explist_slidermenu);
  53.         mDrawerExpandableList.setGroupIndicator(null);//Indicador flecha desplegable izquierda oculta
  54.  
  55.         //A continuación añadimos cabecera general...
  56.         View header = getLayoutInflater().inflate(R.layout.cabecera_general, null);
  57.         mDrawerExpandableList.addHeaderView(header, null, false);
  58.         //...y pie de página
  59.         View footer = getLayoutInflater().inflate(R.layout.pie_pagina, null);
  60.         mDrawerExpandableList.addFooterView(footer, null, false);
  61.  
  62.         cargarDatos();
  63.  
  64.         if (toolbar != null) {
  65.             toolbar.setTitle(mDrawerTitle);
  66.             toolbar.setSubtitle(mTitle);
  67.             toolbar.setLogo(R.mipmap.ic_launcher);
  68.             setSupportActionBar(toolbar);
  69.             getSupportActionBar().setDisplayShowHomeEnabled(true);
  70.             getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  71.         }
  72.  
  73.         mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {
  74.  
  75.             @Override
  76.             public void onDrawerClosed(View view) {
  77.  
  78.                 getSupportActionBar().setTitle(mDrawerTitle);
  79.                 getSupportActionBar().setSubtitle(mTitle);
  80.                 invalidateOptionsMenu();
  81.             }
  82.  
  83.             @Override
  84.             public void onDrawerOpened(View drawerView) {
  85.  
  86.                 getSupportActionBar().setTitle("Menú");
  87.                 getSupportActionBar().setSubtitle("Selecciona opción");
  88.                 invalidateOptionsMenu();
  89.  
  90.             }
  91.         };
  92.  
  93.         mDrawerToggle.setDrawerIndicatorEnabled(true);//Mostrar icono menu animado
  94.         mDrawerLayout.setDrawerListener(mDrawerToggle);
  95.         mDrawerExpandableList.setTextFilterEnabled(true);
  96.         mDrawerExpandableList.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
  97.             @Override
  98.             public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
  99.                 return false;
  100.             }
  101.         });
  102.         mDrawerExpandableList.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
  103.             @Override
  104.             public void onGroupExpand(int groupPosition) {
  105.                 if (ultimaPosicionExpList != -1 && groupPosition != ultimaPosicionExpList) {
  106.                     mDrawerExpandableList.collapseGroup(ultimaPosicionExpList);
  107.                 }
  108.                 ultimaPosicionExpList = groupPosition;
  109.             }
  110.         });
  111.         mDrawerExpandableList.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() {
  112.             @Override
  113.             public void onGroupCollapse(int groupPosition) {
  114.  
  115.             }
  116.         });
  117.         mDrawerExpandableList.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
  118.             @Override
  119.             public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
  120.                 int grup_pos = (int)adapter.getGroupId(groupPosition);
  121.                 int child_pos = (int)adapter.getChildId(groupPosition, childPosition);
  122.                 if(grup_pos == 0) {
  123.                     switch (child_pos) {
  124.                         case 0:
  125.                             //Toast.makeText(getApplicationContext(), "Hijo 1 Grupo 1", Toast.LENGTH_SHORT).show();
  126.                             mDrawerTitle = "Argentina";
  127.                             mTitle = "San Juan";
  128.                             displayView(0);
  129.                             break;
  130.                         case 1:
  131.                             //Toast.makeText(getApplicationContext(), "Hijo 2 Grupo 1", Toast.LENGTH_SHORT).show();
  132.                             mDrawerTitle = "Argentina";
  133.                             mTitle = "Mendoza";
  134.                             displayView(1);
  135.                             break;
  136.                         default:
  137.                             break;
  138.                     }
  139.                 }
  140.                 if(grup_pos == 1) {
  141.                     switch (child_pos) {
  142.                         case 0:
  143.                             Toast.makeText(getApplicationContext(), "Hijo 1 Grupo 2", Toast.LENGTH_SHORT).show();
  144.                             mDrawerTitle = "Grupo 2";
  145.                             mTitle = "Hijo 1 Grupo 2";
  146.                             break;
  147.                         case 1:
  148.                             Toast.makeText(getApplicationContext(), "Hijo 2 Grupo 2", Toast.LENGTH_SHORT).show();
  149.                             mDrawerTitle = "Grupo 2";
  150.                             mTitle = "Hijo 2 Grupo 2";
  151.                             break;
  152.                         case 2:
  153.                             Toast.makeText(getApplicationContext(), "Hijo 3 Grupo 2", Toast.LENGTH_SHORT).show();
  154.                             mDrawerTitle = "Grupo 2";
  155.                             mTitle = "Hijo 3 Grupo 2";
  156.                             break;
  157.                         default:
  158.                             break;
  159.                     }
  160.  
  161.                 }
  162.                 if(grup_pos == 2) {
  163.                     //Acciones
  164.                 }
  165.                 if(grup_pos == 3) {
  166.                     //Acciones
  167.                 }
  168.                 mDrawerLayout.closeDrawer(mDrawerExpandableList);
  169.                 return false;
  170.             }
  171.         });
  172.  
  173.         if (savedInstanceState == null) {
  174.             displayView(0);
  175.         }
  176.  
  177.     }
  178.  
  179.     private void cargarDatos() {
  180.  
  181.         grupos = new ArrayList<String>();
  182.         datosGrupos = new HashMap<String, List<String>>();
  183.  
  184.         grupos.add("Argentina");
  185.         grupos.add("Brazil");
  186.         grupos.add("Chile");
  187.         grupos.add("Uruguay");
  188.  
  189.         List<String> hijos_grupo1 = new ArrayList<String>();
  190.         hijos_grupo1.add("San Juan");
  191.         hijos_grupo1.add("Mendoza");
  192.  
  193.         List<String> hijos_grupo2 = new ArrayList<String>();
  194.         hijos_grupo2.add("Hijo 1 de grupo 2");
  195.         hijos_grupo2.add("Hijo 2 de grupo 2");
  196.         hijos_grupo2.add("Hijo 3 de grupo 2");
  197.  
  198.         List<String> hijos_grupo3 = new ArrayList<String>();
  199.         hijos_grupo3.add("Hijo 1 de grupo 3");
  200.  
  201.         List<String> hijos_grupo4 = new ArrayList<String>();
  202.         hijos_grupo4.add("Hijo 1 de grupo 4");
  203.         hijos_grupo4.add("Hijo 2 de grupo 4");
  204.         hijos_grupo4.add("Hijo 3 de grupo 4");
  205.         hijos_grupo4.add("Hijo 4 de grupo 4");
  206.  
  207.         datosGrupos.put(grupos.get(0), hijos_grupo1);
  208.         datosGrupos.put(grupos.get(1), hijos_grupo2);
  209.         datosGrupos.put(grupos.get(2), hijos_grupo3);
  210.         datosGrupos.put(grupos.get(3), hijos_grupo4);
  211.  
  212.         adapter = new MyAdapter(this, grupos, datosGrupos);
  213.         mDrawerExpandableList.setAdapter(adapter);
  214.     }
  215.  
  216.     @TargetApi(Build.VERSION_CODES.HONEYCOMB)
  217.     private void displayView(int position) {
  218.         //Log.i("ramiro", "posicion " + position);
  219.         Fragment fragment = null;
  220.         switch (position) {
  221.             case 0:
  222.                 fragment = new Fm_SanJuan();
  223.                 mDrawerTitle = "Argentina";
  224.                 mTitle = "San Juan";
  225.                 break;
  226.             case 1:
  227.                 fragment = new Fm_Mendoza();
  228.                 Log.i("ramiro", "entro por mendoza");
  229.                 break;
  230.             case 2:
  231.                 fragment = new Fm_Inicio();
  232.                 break;
  233.             case 3:
  234.                 fragment = new Fm_Inicio();
  235.                 break;
  236.  
  237.             default:
  238.                 fragment = new Fm_Inicio();
  239.                 break;
  240.         }
  241.  
  242.         if (fragment != null) {
  243.             FragmentManager fragmentManager = getFragmentManager();
  244.             fragmentManager.beginTransaction()
  245.                     .replace(R.id.frame_container, fragment).commit();
  246.  
  247.  
  248.             mDrawerExpandableList.setItemChecked(position, true);
  249.             mDrawerExpandableList.setSelection(position);
  250.             setTitle(grupos.get(position));
  251.             getSupportActionBar().setTitle(mDrawerTitle);
  252.             getSupportActionBar().setSubtitle(mTitle);
  253.             mDrawerLayout.closeDrawer(mDrawerExpandableList);
  254.             Log.i("ramiro", "paso por close");
  255.         } else {
  256.             Log.e("Aviso", "Error cuando se crea el fragment");
  257.         }
  258.     }
  259.  
  260.     @Override
  261.     public boolean onCreateOptionsMenu(Menu menu) {
  262.         // Inflate the menu; this adds items to the action bar if it is present.
  263.         getMenuInflater().inflate(R.menu.menu_main, menu);
  264.         return true;
  265.     }
  266.  
  267.     @Override
  268.     public boolean onOptionsItemSelected(MenuItem item) {
  269.         switch (item.getItemId()) {
  270.             case android.R.id.home:
  271.                 finish();
  272.                 break;
  273.             default:
  274.                 break;
  275.         }
  276.         return true;
  277.     }
  278.  
  279.     @Override
  280.     protected void onPostCreate(Bundle savedInstanceState) {
  281.         super.onPostCreate(savedInstanceState);
  282.         mDrawerToggle.syncState();
  283.     }
  284.  
  285.     @Override
  286.     public void onConfigurationChanged(Configuration newConfig) {
  287.         super.onConfigurationChanged(newConfig);
  288.         mDrawerToggle.onConfigurationChanged(newConfig);
  289.     }
  290.  
  291.     public boolean onKeyDown (int keycode, KeyEvent event){
  292.         if (keycode == KeyEvent.KEYCODE_MENU) {
  293.  
  294.             if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) {
  295.                 mDrawerLayout.closeDrawer(Gravity.LEFT);
  296.             } else {
  297.                 mDrawerLayout.openDrawer(Gravity.LEFT);
  298.             }
  299.             return true;
  300.         }else{
  301.             return super.onKeyDown(keycode, event);
  302.         }
  303.     }
  304.  
  305.     @Override
  306.     public void onBackPressed() {
  307.  
  308.         if(mDrawerLayout.isDrawerOpen(Gravity.LEFT)){
  309.             mDrawerLayout.closeDrawer(Gravity.LEFT);
  310.         }else{
  311.             super.onBackPressed();
  312.         }
  313.     }
  314. }
');