2015-04-22 98 views
0

我試圖爲導航抽屜菜單實現可擴展列表視圖。我想知道是否有一種方法可以使菜單中只有一項可以擴展?例如,打開抽屜式導航菜單將產生可擴展列表查看沒有組的組項目



Ç
- > C1
- > C2
- > C3
d

所以,C將是唯一而A,B和D只會是沒有孩子的單項物品。任何人都有這方面的見解?

回答

0

你可以這樣做。只是

@Override 
public int getChildrenCount(int groupPosition) { 
    try { 
     return this._listDataChild.get(this._listDataHeader.get(groupPosition)) 
       .size(); 
    } catch (NullPointerException e) { 
     e.printStackTrace(); 
     return 0; 
    } 
} 

這個映射孩子只有 「C」,這是C1,C2等 而更換

@Override 
public int getChildrenCount(int groupPosition) { 
    return this._listDataChild.get(this._listDataHeader.get(groupPosition)) 
      .size(); 
} 

這ExpandableListAdapter將返回0孩子計數A,B, d等

+0

所以目前我使用的是displayView (int位置)來確定我如何顯示片段。我只是想知道這將如何解決這種問題。任何見解? –

0

另一種方式讓你的設計是採用抽屜式導航菜單佈局,這種佈局中,把一個ExpandListView一個元素。而且,如果你想這樣做,只要按照下面兩個步驟:

第1步:設計佈局:

<android.support.v4.widget.DrawerLayout 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="center_vertical"> 
    <!-- The main content view --> 
    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
    <!-- The navigation drawer --> 
    <LinearLayout 
     android:id="@+id/linearLayout" 
     android:layout_width="220dp" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice"> 

     <!-- you can put other views, I put a textview here --> 

     <TextView 
      android:id="@+id/tv_test" 
      android:text="New Test" 
      android:layout_width="210dp" 
      android:layout_height="wrap_content" /> 

    </LinearLayout> 

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

第2步:java代碼:

DrawerLayout mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); 
TextView tv_test = (TextView)findViewById(R.id.tv_test); 
tv_test.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     mDrawerLayout.closeDrawer(linearLayout);//don't forget it 
     mDrawerLayout.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       //action 
      } 
     } 
    } 
});