0

我有一个这样的列表:

-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 和 THREE 展开,则:

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

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

为什么我想要孩子的 pos:

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

4

1 回答 1

0

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

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

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

于 2015-12-05T14:14:15.450 回答