1

私はExpandableListView、カスタム アダプターを使用して、ジェスチャ検出器で、ジェスチャによって選択されたリスト項目を見つける方法を見つけようとしています。

class MyGestureDetector extends SimpleOnGestureListener {
    @Override
    public void onLongPress(MotionEvent e) {
        int itemnum = listView.pointToPosition((int) e.getX(), (int) e.getY());
        itemnum -= listView.getFirstVisiblePosition();

したがって、itemnum=7 の場合、

group A label
group B label
item B1
item B2
group C label
item C1
item C2
item C3 <== this is position 7, assuming group A label was still on the screen

したがって、グループ B が折りたたまれた場合、itemnum 7 は C5 または D1 になります。

特定の位置番号が与えられた場合、それが参照するグループ位置と子位置をどのように判断しますか?

展開されたグループがわかっている場合は、ループして各項目を数えることができますが、リストがスクロールされた場合は、以前のものは数えられません。

では、与えられたを、それを作用した に変換するMotionEventにはExpandableListViewどうすればよいでしょうか?View

4

1 に答える 1

1

解決策を見つけました。それが最善のアプローチであるかどうかは定かではありません。

    @Override
    public void onLongPress(MotionEvent e) {
        int itemnum = listView.pointToPosition((int) e.getX(), (int) e.getY());
                    int itemnum2 = itemnum - listView.getFirstVisiblePosition();
        View vi = listView.getChildAt(itemnum2);

これが私がビューを取得する方法です。

残念ながら、子レコードを見つけるには、上記からFile取得した後、ループする必要がありました。TextViewvi

                String filename = textView.getText().toString();
                int groupCount = mAdapter.getGroupCount();
                for(int t = 0; t < groupCount; t++) {
                        int childCount = mAdapter.getChildrenCount(t);
                        for(int y = 0; y < childCount; y++) {
                            File f = (File) mAdapter.getChild(t, y);
                            if (f.getName().equals(filename)) {
                            }
                        }
                }
于 2012-12-16T04:01:18.857 に答える