在 ExpandableListView 组中单击按钮时如何更改片段?

How to change a fragment when button is clicked inside an ExpandableListView Group?

我在 Fragment 中显示了以下 ExpandableListView。当用户单击突出显示的箭头时,更改 Fragment 的正确方法是什么?另外,我如何获得被单击按钮的组索引(即突出显示的箭头的索引 0)?

使用 ExpandableListView.OnGroupClickListener

实现监听器点击时调用的方法是:

void onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
    // int position and other parameters give you everything you need to know about the click
}

还有监听器 ExpandableListView.OnGroupCollapseListener and ExpandableListView.OnGroupExpandListener 如果您想要更精细的控制,您可以实现这些监听器。

要实现它,声明一个实现 OnGroupClickListener 的对象,或者创建一个匿名的 class:

ExpandableListView.OnGroupClickListener mListener = 
    new ExpandableListView.OnGroupClickListener({
        public void onGroupClick(ExpandableListView parent, View v, int groupPosition, long id){
             //handle whatever you want to do on the click in this method
        }
});

然后,从 Fragment 视图中获取 ExpandableListView(您可能会这样做,不过我只是在这里猜测,如果不是的话也没关系):

ExpandableListView listView = 
    (ExpandableListView) this.getView()
   .findViewById(R.id.whatever_you_set_your_expandablelistview_id_to);

最后,将侦听器添加到您的 ExpandableListView:

listView.setOnGroupClickListener(mListener);

并且您的监听器的 "onGroupClick" 将在组被点击时被调用。请注意,您可能只能为每个 ExpandableListView 添加一个侦听器。 Also, be careful of Context leaks when using anonymous classes for listeners on views!