在我的expandableListView中,我制作了一个自定义按钮来扩展/折叠组并使其正常工作,但是当折叠时不行。

用这个代码

listView.setOnGroupClickListener(new OnGroupClickListener() {

            @Override
            public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
                Log.d("group click");
                return true;
            }
        });

        listView.setOnGroupCollapseListener(new OnGroupCollapseListener() {

            @Override
            public void onGroupCollapse(int groupPosition) {
                Log.d("group collapse");

            }
        });

        listView.setOnGroupExpandListener(new OnGroupExpandListener() {

            @Override
            public void onGroupExpand(int groupPosition) {
                Log.d("group expand");
            }
        });

使用此代码:
当组折叠时:
  • 单击按钮=展开组
  • 单击组上其他任何位置=
    做某事setOnGroupClickListener

  • 当组扩展时:
  • 单击按钮=折叠
    组(好的,但是...)
  • 单击组上其他任何位置=
    使小组崩溃而不 react
    来自setOnGroupClickListener

  • 为什么在单击扩展组时未加载setOnGroupClickListener
    怎么解决呢?

    最佳答案

    我遇到了一个类似的问题。我需要所有群组始终保持扩展和可点击状态。为了使其工作,我在ExpandableListActivity中编写了这个猴子代码:

    public void onCreate(Bundle savedInstanceState) {
        ...
        // Expanding all.
        for(int i = 0; i < adapter.getGroupCount(); i++)
            getExpandableListView().expandGroup(i);
        ...
    }
    
    @Override
    public boolean onGroupClick(ExpandableListView parent, View v,
            int groupPosition, long id) {
        overrideStupidListBehaviour(groupPosition);
        return false;
    }
    
    @Override
    public void onGroupCollapse(int groupPosition) {
        // Forbidding it to collapse.
        getExpandableListView().expandGroup(groupPosition);
        overrideStupidListBehaviour(groupPosition);
    }
    
    private void overrideStupidListBehaviour(int groupPosition) {
        // Code to do when onGroupClick is called
    }
    

    我真的很感兴趣,如果有正常的方法可以做到这一点。

    10-07 19:33
    查看更多