gpt4 book ai didi

android - ExpandableListView.getPackedPositionGroup 在 onItemLongClick 中总是返回 0

转载 作者:行者123 更新时间:2023-11-29 14:39:12 33 4
gpt4 key购买 nike

对于那些遇到和我一样的问题的人,我会把它留在这里:

我试图为 ExpandableListView 设置一个 OnItemLongClickListener 并想知道哪个组被点击了。根据此处关于 SO 的许多问题的建议(例如 this question),我使用的是 ExpandableListView.getPackedPositionGroup,但它总是返回 0

这是我使用的代码:

@Override
public boolean onItemLongClick(AdapterView<?> list, View view, int position, long id) {
Log.d(D, "position: "+position);
Log.d(D, "id: "+position);
Log.d(D, "unpacked position: "+ExpandableListView.getPackedPositionGroup(position));

switch(ExpandableListView.getPackedPositionType(position)) {
case ExpandableListView.PACKED_POSITION_TYPE_CHILD:
Log.d(D, "position type: child");
break;

case ExpandableListView.PACKED_POSITION_TYPE_GROUP:
Log.d(D, "position type: group");
break;

case ExpandableListView.PACKED_POSITION_TYPE_NULL:
Log.d(D, "position type: null");
break;

default:
Log.wtf(D, "position type: "+ExpandableListView.getPackedPositionType(position));
}
return true;
}

我发现 position 和 id 总是具有相同(正确)的值。但是,类型始终被识别为组,并且解包位置始终为 0。

那么这段代码有什么问题呢?

最佳答案

已发布代码的问题是,position 不是打包位置,而是单击项目的平面位置。这意味着组项目和可见的子项目都被计算在内。

解决方案是从扁平位置获取打包位置,然后解包:

final int packedPosition = ((ExpandableListView) list).getExpandableListPosition(position);
final int groupPosition = ExpandableListView.getPackedPositionGroup(packedPosition);

groupPosition 现在保持点击组的正确位置。

关于android - ExpandableListView.getPackedPositionGroup 在 onItemLongClick 中总是返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17659207/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com