在 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!
我在 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!