android中带有自定义控件的ExpandableListView

android中带有自定义控件的ExpandableListView,android,expandablelistview,Android,Expandablelistview,我正在开发一个具有书籍树状结构的应用程序,我正在使用可展开的Listview在侧导航菜单中显示书籍名称,单击书籍名称,它将在子列表中显示章节。但是,在我的例子中,我需要另一种方式,当用户单击书名时,它应该打开ChaptersFragment并在那里显示章节列表,当用户单击展开图标时,章节应该显示在可展开列表中 mDrawerListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {

我正在开发一个具有书籍树状结构的应用程序,我正在使用可展开的Listview在侧导航菜单中显示书籍名称,单击书籍名称,它将在子列表中显示章节。但是,在我的例子中,我需要另一种方式,当用户单击书名时,它应该打开ChaptersFragment并在那里显示章节列表,当用户单击展开图标时,章节应该显示在可展开列表中

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)?