我正在关注这个:以编程方式折叠 ExpandableListView 中的组 https://stackoverflow.com/questions/4314777/programmatically-collapse-a-group-in-expandablelistview。我希望用户能够一次仅展开一组并平滑滚动到正确的位置。我编写了一个实现 OnGroupClickListener 的自定义适配器:
public class CategoriesListAdapter extends BaseExpandableListAdapter implements OnGroupClickListener {
private ExpandableListView expListView;
private int lastExpandedGroupPosition = -1;
// I get the expListView in the constructor...
@Override
public boolean onGroupClick(ExpandableListView parent, View view, int groupPosition, long id) {
parent.smoothScrollToPosition(groupPosition);
if (parent.isGroupExpanded(groupPosition)) {
parent.collapseGroup(groupPosition);
} else {
parent.expandGroup(groupPosition);
}
return true;
}
@Override
public void onGroupExpanded(int groupPosition) {
if (groupPosition != lastExpandedGroupPosition) {
expListView.collapseGroup(lastExpandedGroupPosition);
}
super.onGroupExpanded(groupPosition);
lastExpandedGroupPosition = groupPosition;
}
}
不幸的是 onGroupClick 事件从未被触发...(我在方法中放入了一些日志)。我也尝试过:
expListView.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View view, int groupPosition, long id) {
// Same as above...
});
}
这种替代方案的结果相同......有什么想法吗?
我建议您首先检查导入(您的问题中未显示),并确保您已导入android.widget.ExpandableListView.OnGroupClickListener
或替换:new OnGroupClickListener() {
with new android.widget.ExpandableListView.OnGroupClickListener {
EDIT :
我还注意到你在身体上返回“true”boolean onGroupClick(...)
这意味着“点击已处理”并且组永远不会折叠、展开。
如果你想扩展你应该返回 false。所以我建议你这样做:
expListView.setOnGroupClickListener(new OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
Log.d("onGroupClick:", "worked");
parent.smoothScrollToPosition(groupPosition);
if (parent.isGroupExpanded(groupPosition)) {
parent.collapseGroup(groupPosition);
} else {
parent.expandGroup(groupPosition);
}
return false;
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)