可扩展列表查看没有组的项目

时间:2015-04-22 19:43:28

标签: java android listview expandablelistview expandable

我正在尝试为导航抽屉菜单实现可扩展列表视图。我想知道是否有办法使它只有菜单中的一个项目可以扩展?例如,打开导航抽屉菜单将产生

一个

ç
- > C1
- > C2
- > C3
d

所以,C将是唯一的一组,而A,B和D只是一些没有孩子的单项。有人对此有任何了解吗?

2 个答案:

答案 0 :(得分:0)

你可以做到这一点。只是将孩子映射到只有“C”,即c1,c2等。 并替换

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

这在ExpandableListAdapter with

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

这将返回A,B,D等的0子计数。

答案 1 :(得分: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
            }
        } 
    }
});