没有组的可扩展列表视图项目

Expandable List View items without Group

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

一个
B
C
->C1
->C2
->C3
D

因此,C 将是唯一的组,而 A、B 和 D 只是没有任何子项的单项。有人对此有任何见解吗?

你可以的。只需将 child 映射到 "C",即 c1、c2 等。 并替换

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

这在 ExpandableListAdapter 中

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

这将 return 0 child 算作 A、B、D 等

获得设计的另一种方法是在导航抽屉菜单中使用布局,在此布局内,放置一个 ExpandListView 和一个元素。而且,如果您想这样做,只需按照以下 2 个步骤操作:

第一步:设计布局:

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