【问题标题】:ExpandableListview OnGroupClickListener Not FiringExpandableListview OnGroupClickListener 未触发
【发布时间】:2013-08-17 17:40:53
【问题描述】:

我正在关注这个: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 expandablelistview onclicklistener expandablelistadapter


    【解决方案1】:

    我建议您先检查导入(未在您的问题中显示),并确保您已导入 android.widget.ExpandableListView.OnGroupClickListener

    或替换:new OnGroupClickListener() {

    new android.widget.ExpandableListView.OnGroupClickListener {

    编辑:

    我还注意到您在 boolean onGroupClick(...) 的正文中返回“true”,这意味着“点击已处理”并且组永远不会折叠、展开。

    如果你想扩展,你应该返回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;
                }
            });
    

    【讨论】:

    • 可以参考this
    • 导入正确。如果我将 return 设置为 false,则该组在第一次单击时不会正确折叠(我需要单击 2 次),并且根本不会触发任何事件。无论如何,为什么适配器上的 onGroupClickListener 覆盖不起作用?上一篇:为什么滚动在4.3上很流畅,在2.3.3上又太快了?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多