2014-04-21 6 views
10

So implementieren Sie Android-Navigationsschublade so?Wie zu implementieren Expandable android Navigation Schublade mit Unterpunkten?

TopLevelView1 ~ TopLevelView4 auswählen und keine Kinder
TopVevelView5 können

Meine Frage collaspe ist, dass, wenn meine Gruppenstruktur wie dies zum Beispiel

All
Starren
Kategorie
---- mp3
---- txt
---- doc
---- pdf

wenn ich alle auswählen dann alle Datei anzeigen.

wenn ich ausgewählt, dann nur gestartete Datei anzeigen.

wenn ich mp3 wähle dann nur mp3-Dateien anzeigen.

und Kategorie kann erweitern und reduzieren.

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

+1

Sieht aus wie ein 'ExpandableListView'. Abgesehen davon implementieren Sie es genauso wie bei einem normalen 'ListView'. Das Bild stammt von der Android-Entwickler-Seite. Warum folgst du dem Tutorial dort nicht? [Hier ist es] (https://developer.android.com/training/implementing-navigation/nav-drawer.html) –

+0

Sie möchten wahrscheinlich eine ExpandableListView verwenden ... hier ist ein Beispiel: http: //www.androidhive .info/2013/07/android-expandable-list-view-tutorial/ –

+1

Entschuldigung, dass ich meine Frage nicht klar beschrieben habe. Ich habe meine Frage aktualisiert. – Sagi

Antwort

3

Für die Navigation:

  • Alternative 1:

    Sliding Menu, das ich auf jeden Fall mit gehen. Sogar von beliebten Anwendungen wie LinkedIn und Foursquare verwendet und einfach zu implementieren und zu verwenden. Vollständige Erklärung und Beispiel Quellcodes: SlidingMenu - GitHub

  • Alternative 2:

    Android Navigationsleiste. Wenn Sie alles vollständig selbst anpassen möchten, ohne Bibliotheken zu verwenden, ist dies Ihre Option. Sie können Codes überprüfen und wie es von Android Developers Website zu tun: Creating a Navigation Drawer

Blick in Ihrer Navigationsleiste/Schiebe-Menü:

  • Alternative 1:

    Android Standard ExpandableListView. Links: Android Developers, androidhive

  • Alternative 2:

    AnimatedExpandableListView, die von ExpandableListView implementiert ist, aber wenn ein Element angeklickt wird, wird der expand mit einer glatten Animation getan, was Sie bevorzugen für ein verwenden, besser aussehen.AnimatedExpandableListView

1

Probieren Sie etwas wie dieser Code

<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> 

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; 
      } 
     });