如何防止notifyDataSetChanged在ExpandableListView中折叠打开的组?

时间:2015-06-01 12:07:38

标签: android expandablelistview

在我的应用程序中,我有一个动态的ExpandableListView以及一个刷新按钮。当用户点击刷新按钮时,会下载最新数据,我会调用notifyDataSetChanged()以更新用户界面。

问题是notifyDataSetChanged()会折叠之前打开的所有组,这会导致用户体验不佳。有没有办法可以避免这种情况?

由于

1 个答案:

答案 0 :(得分:1)

这是我使用的方法。更新setExpandedGroup()之前UI,然后在更新后更新getExpandedIds()。我的idsExpand = new ArrayList<Integer>()也是Integer数组。

public static void setExpandedGroup() {
        if (expListView != null
                && expListView.getExpandableListAdapter() != null) {
            final int groupCount = expListView.getExpandableListAdapter().getGroupCount();
            for (int i = 0; i < groupCount; i++) {
                if (expListView.isGroupExpanded(i)) {
                    idsExpand.add(i);
                }
            }
        }

    }

    public static void getExpandedIds() {
        if (idsExpand != null) {
            final int groupCount = idsExpand.size();
            for (int i = 0; i < groupCount; i++) {
                if (expListView != null) {
                    try {
                        expListView.expandGroup(idsExpand.get(i));
                    } catch (Exception ignored) {
                    }

                }

            }
        }
    }

希望它有所帮助!