Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将MotionEvent转换为position后,如何确定expandablelistview中引用了哪个列表项_Android_Expandablelistview_Gesturedetector - Fatal编程技术网

Android 将MotionEvent转换为position后,如何确定expandablelistview中引用了哪个列表项

Android 将MotionEvent转换为position后,如何确定expandablelistview中引用了哪个列表项,android,expandablelistview,gesturedetector,Android,Expandablelistview,Gesturedetector,我有一个ExpandableListView,带有一个自定义适配器,在我的手势检测器中,我试图找出如何找到由手势选择的列表项 class MyGestureDetector extends SimpleOnGestureListener { @Override public void onLongPress(MotionEvent e) { int itemnum = listView.pointToPosition((int) e.getX(), (int) e

我有一个
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
A组标签
B组标签
项目B1
项目B2
C组标签
项目C1
项目C2

第C3项我找到了解决方案。不确定这是否是最好的方法

    @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);
所以这就是我得到这个观点的方式

不幸的是,在我从上面的
vi
检索到
TextView
之后,为了找到子记录(在我的例子中是一个
文件),我不得不循环:

                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)) {
                            }
                        }
                }
String filename=textView.getText().toString();
int groupCount=mAdapter.getGroupCount();
for(int t=0;t
我找到了一个解决方案。不确定这是否是最好的方法

    @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);
所以这就是我得到这个观点的方式

不幸的是,在我从上面的
vi
检索到
TextView
之后,为了找到子记录(在我的例子中是一个
文件),我不得不循环:

                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)) {
                            }
                        }
                }
String filename=textView.getText().toString();
int groupCount=mAdapter.getGroupCount();
for(int t=0;t