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

代替案:
ハッシュマッピングを使用できますが、組み込みの方法があるかどうかを確認したいと思います:)

子供の位置が必要な理由:

リスト内の子の位置を、データベース内の対応する ID にマップしました。したがって、ユーザーが子を削除したい場合は、ハッシュマップでそれを検索し、その 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 に答える