Android: Multi-level ExpandableListView 多次显示 children

Android: Multi-level ExpandableListView displaying children multiple times

我已经创建了一个 3 级 (Root, Parent, Child) 自定义 ExpandableListView 和关联的适配器,这要归功于其中的一些教程。我无法显示列表的 Parent 级别,而 RootChild 级别显示正确。我发现 Parent 级别将其视图复制 N 次,其中 N 是 Parent 组中的元素数。

我想要的: Three categories under Canon

我得到的是: The three categories under Canon are duplicated 3 times

Root 等级:

@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, 
                         View convertView, ViewGroup parent) {

/* this list is the header of the Parent level, and I know it has the correct number of elements */
List<String> lensTypeList = listDataChild.get(_listDataHeader.get(groupPosition));

/* the Parent level of the ExpandableListView */
LensSecondLevel lensSecondLevel = new LensSecondLevel(ManageLensesActivity.this);

/* all params other than lensTypeList work correctly in the later levels */
lensSecondLevel.setAdapter(new SecondLevelListViewAdapter(ManageLensesActivity.this, lensTypeList, lensMap, lensPositionIndicesMap));

getChildrenCount(int groupPosition) of Root level returns 每次都是正确的数字,尽管创建了多少 children (Parent) 视图。我不知道为什么 getGroupView 被重复调用 Parent 级别。

Parent 等级:

@Override
public Object getGroup(int groupPosition)
{
    /* _listDataHeader is the same ArrayList<String> lensTypeList from above */
    return this._listDataHeader.get(groupPosition);
}

难道您不应该将 ArrayList<String> 作为 ExpandableListView 第二层的 header 传递吗?如果我通过第 2 级单个 String 作为 header,我只能达到预期的结果,但这打破了我寻找 Child 级视图的逻辑,因为 groupPosition总是 0 因为 _listDataHeader.size() == 1

提前感谢任何help/advice。 :)

在这里找到答案:

我不太明白为什么,但我不得不将 Root 级别的 getChildrenCount(int groupPosition) 硬编码为 return 1,而不是 1 的实际数量=19=]。在我的应用程序的其他 ExpandableListView 中,我总是 return children 的数量并且它按预期工作。