没有组的可扩展列表视图项目
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
}
}
}
});
我正在尝试为导航抽屉菜单实现可扩展列表视图。我想知道是否有办法使菜单中只有一个项目可以展开?例如,打开导航抽屉菜单将产生
一个
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
}
}
}
});