如何获取孩子在Android的可扩展列表中相对于整个列表的位置?



我有一个这样的列表:

-ONE
-TWO
-THREE

展开时:

-ONE
 ->a1
-TWO
 ->a2
 ->b2
-THREE
 ->a3

我想要什么:

我想要一个孩子在整个列表中的位置,不管其他组是否扩展:

a1=0
a2=1
b2=2
etc...

到目前为止我尝试了什么:
int childPos = ExpandableListView.getPackedPositionChild(info.packedPosition);

这只会让我知道孩子在小组中的位置。所以,

a1=0
a2=0
b2=1
etc...

我还研究了getFlatListPosition,但它的工作方式是,只有当组扩展时,孩子的位置才会相对于列表计算。它还计算了团队的位置。例如,如果一个未展开,二个和三个展开,则:

-ONE
-TWO = 0
 ->a2 = 1
 ->b2 = 2
-THREE = 3
 ->a3 = 4

备选方案:
我可以使用哈希映射,但想看看是否有内置的方式:)

为什么我想要孩子的位置:

我已经将孩子在列表中的位置映射到了数据库中相应的id。因此,当用户想要删除child时,我可以在hashmap中查找它,并将它的id传递给数据库remove函数。

最后,我找到了解决方案。在您的点击中,添加以下代码:

int size = 0;
int mpos;
for (int m = 0; m < groupPosition; m++) {
  size += menuAdapter.getChildrenCount(m);
}
mpos = childPosition + size;

因此,mpos将是子值在整个列表中的位置。

最新更新