1

问题是每次我在我的 ExpandableListView 中向 GroupItem 添加多个 Child 时,该项目都会与前一个孩子重复。我已将范围缩小到我的 ExpandableListView(自定义)适配器中的 getChild() 方法。

getChild() 方法如下所示:

public Object getChild(int groupPosition, int childPosition) {

     return rCollection.get(weekData.get(groupPosition)).get(childPosition);

}

哪里rCollection = Map<String, List<Custom>>;weekData = List<String>;

如何更改 getChild 以使每个请求仅返回一项,这样我就不会得到重复项?我不能使用 for 循环,因为如果我将 groupPosition 和 childPosition 更改为 Arrays,我将不得不再次实现该方法。

为了说明,这就是问题的样子:

重复

如何在第一次调用时排除第 2 项被拾取,以及如何在第二次调用时排除第 1 项被调用?等等。

感谢您的阅读和所有帮助。

4

3 回答 3

2
@Override
public int getChildCount(.....)
{
     return 2;
}

如果您确定每个项目只有 2 个子项目
对不起,我的错,这是您想要的正确方法。
编辑

@Override
public int getChildrenCount(int groupPosition)
{
    return (rCollection.get(weekdata.get(groupPosition())).size();
}

这将返回List<Custom>地图的大小(长度)。
如果需要,平衡括号

于 2013-10-24T14:41:58.100 回答
1

不确定您是否找到了解决方案,但这对我有用;因为我在子视图中返回了一个 recyclerview,所以只需在 getChildrenCount() 方法中返回 1。

而已

于 2021-07-10T13:43:09.603 回答
0

我从一些旧的回购中挖出来的,我想这就是我最终要做的。

public int getChildrenCount(int groupPosition) {
    // Fixes a bunch of NPE when the groupPosition = NULL. This way it checks and returns 0 when it = null. 
    List<MySQLWeek> group = rCollection.get(weekData.get(groupPosition));

        if (group == null){
        return 0;
        }

        return group.size();


}
于 2017-10-05T08:01:31.893 回答