android中带有自定义控件的ExpandableListView
我正在开发一个具有书籍树状结构的应用程序,我正在使用可展开的Listview在侧导航菜单中显示书籍名称,单击书籍名称,它将在子列表中显示章节。但是,在我的例子中,我需要另一种方式,当用户单击书名时,它应该打开ChaptersFragment并在那里显示章节列表,当用户单击展开图标时,章节应该显示在可展开列表中android中带有自定义控件的ExpandableListView,android,expandablelistview,Android,Expandablelistview,我正在开发一个具有书籍树状结构的应用程序,我正在使用可展开的Listview在侧导航菜单中显示书籍名称,单击书籍名称,它将在子列表中显示章节。但是,在我的例子中,我需要另一种方式,当用户单击书名时,它应该打开ChaptersFragment并在那里显示章节列表,当用户单击展开图标时,章节应该显示在可展开列表中 mDrawerListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
mDrawerListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
return false;
}
});
// Listview Group expanded listener
mDrawerListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
}
});
// Listview Group collasped listener
mDrawerListView.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int groupPosition) {
}
});
// Listview on child click listener
mDrawerListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
// TODO Auto-generated method stub
return false;
}
});
您需要一个对活动的回调,该回调表示单击了哪个项目。然后,活动需要获取信息来填充新片段,并使用FragmentManager在中交换新片段 在NavigationDrawerFragment中:
private NavigationDrawerListener mCallback;
@Override
public void onAttach(Activity activity) {
super.OnAttach(activity);
try {
mCallback = (NavigationDrawerListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException("...");
}
...
}
...
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
mCallback.onNavigationItemClicked(groupPosition);
}
...
public static interface NavigationDrawerListerner {
public void onNavigationItemClicked(int groupPosition)
}
...
在活动中
...
@Override
public void onNavigationItemClicked(int groupPosition) {
Bundle args = getFragmentInformation(); //somehow
Fragment newFragment = YourFragment.newInstance(args);
getFragmentManager().beginTransaction().
.replace(R.id.your_container), newFragment) //whatever ViewGroup contains the fragment
.commit();
}
...
谢谢@seiterm,但我需要两个动作来执行。。我的意思是,如果用户点击指示器,它应该会扩展列表。。如何实现这一点扩展列表是默认行为。我假设这在听众不在场时起作用。您是否尝试过不使用该事件(返回false)?