【问题标题】:Android expandable listview removing group item messes up viewAndroid可扩展列表视图删除组项目混乱视图
【发布时间】:2016-06-22 13:32:25
【问题描述】:

当我尝试从可扩展列表视图中删除一个组时,适配器会在上面的组项内创建一个重复视图。

所以我有以下 可扩展列表视图 包含 3 个组,每个组都有一个孩子:

当我尝试删除以下屏幕截图所示名为“Toegevoegd”的组项时:

列表视图删除了正是我想要的组,但问题是上一个名为“andere”的组项创建了一个重复

下面的代码 sn -p 显示了删除过程:

                for (Iterator<Header> headerIterator = articleList.iterator(); headerIterator.hasNext(); ) {
                Header header = headerIterator.next();
                if (header.getType().equals(selectedPickingLine.getType())) {
                    ArrayList<PickingLine> pickingLines = header.getPickingLineList();
                    for (Iterator<PickingLine> pickingLineIterator = pickingLines.iterator(); pickingLineIterator.hasNext(); ) {
                        PickingLine pickingLine = pickingLineIterator.next();
                        if (pickingLine.getPickingLineNr() == selectedPickingLine.getPickingLineNr()) {
                            if (selectedPickingLine.getAmount() == 0) {
                                articleRemoved = true;
                                if (pickingLines.size() == 1) {
                                    headerIterator.remove();
                                } else {
                                    pickingLineIterator.remove();
                                }
                            } else {
                                pickingLines.set(pickingLines.indexOf(pickingLine), selectedPickingLine);
                            }
                        }
                    }
                }
            }
            adapter.notifyDataSetChanged();

HeaderIterator 控制组视图,pickingLineIterator 控制每个组项的子项。

我在初始化适配器时将底层数组列表“articleList”传递给适配器:

    public OrderlinesHeaderAdapter(Activity activity, ArrayList<Header> articleList) {
    this.articleList = articleList;
    this.activity = activity;
}

为什么适配器会创建重复条目? 我调试了应用程序,底层数组列表不包含任何重复项...

【问题讨论】:

    标签: android expandablelistview


    【解决方案1】:

    我的解决方案是首先折叠我要删除的组。

    yourListView.collapse(groupPosition);
    yourListViewDataList.remove(groupPosition);
    yourAdapter.notifyDataSetChanged();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      • 2021-08-25
      相关资源
      最近更新 更多