【问题标题】:How to get a child's position within an ExpandableList in Android relative to the entire list?如何在Android的可扩展列表中获取孩子相对于整个列表的位置?
【发布时间】:2012-07-29 13:16:34
【问题描述】:

我有一个这样的列表:

-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

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

我为什么要孩子的位置:

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

【问题讨论】:

  • 您使用哪种适配器来填充ExpandableListView

标签: android list hashmap expandablelistview


【解决方案1】:

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

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

所以,mpos 将是整个列表中子值的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 2023-03-20
    • 2017-02-06
    相关资源
    最近更新 更多