我已经创建了一个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)
级别的 Root
每次都会返回正确的数字,尽管创建了多少个子项(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第二级的标题吗?如果我将第二级String
作为标题传递,我只能达到预期的结果,但这会破坏我查找Child
级别视图的逻辑,因为groupPosition
始终是{{ 1}}自0
提前感谢您的任何帮助/建议。 :)
答案 0 :(得分:0)
在这里找到答案:https://stackoverflow.com/a/35208411/5004391
我真的不明白为什么,但我必须对getChildrenCount(int groupPosition)
级别的Root
进行硬编码才能返回1
,而不是实际的子级数。在我的应用程序的其他ExpandableListView
中,我总是返回子项数,它按预期工作。