Android: Multi-level ExpandableListView 多次显示 children
Android: Multi-level ExpandableListView displaying children multiple times
我已经创建了一个 3 级 (Root, Parent, Child
) 自定义 ExpandableListView 和关联的适配器,这要归功于其中的一些教程。我无法显示列表的 Parent
级别,而 Root
和 Child
级别显示正确。我发现 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 的数量并且它按预期工作。
我已经创建了一个 3 级 (Root, Parent, Child
) 自定义 ExpandableListView 和关联的适配器,这要归功于其中的一些教程。我无法显示列表的 Parent
级别,而 Root
和 Child
级别显示正确。我发现 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 的数量并且它按预期工作。