android - 将MotionEvent转换为位置后,如何确定在可扩展 ListView 中引用了哪个列表项

标签 android expandablelistview gesturedetector

我有一个带有自定义适配器的 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 组折叠,则第 7 项将是 C5 或 D1。

给定一个特定的位置编号,我如何确定它指的是哪个组位置和子位置?

如果我知道扩展了哪个组,那么我可以循环遍历,计算每个项目,但如果列表已经滚动,则不应计算较早的项目。

那么,给定 ExpandableListView 上的 MotionEvent,我如何将其转换为执行操作的 View

最佳答案

我找到了解决方案。不确定这是否是最佳方法。

    @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);

这就是我获得 View 的方式。

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

                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)) {
                            }
                        }
                }

关于android - 将MotionEvent转换为位置后,如何确定在可扩展 ListView 中引用了哪个列表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13897889/

相关文章:

Android Websocket 错误

android - 是否能够创建一个 iPhone 应用程序,不通过 wifi 或 3G 使用互联网,而是使用手机上的 WIFI 发送信息

java - 使用java编码设置微调器

android - Intent 点击搜索查看结果的另一个 Activity

android - SimpleOnGestureListener onFling 速度方向问题

android - GestureDetector 上的 OnUp 事件

java - 如何将整数值分配给 String 元素的 ArrayList?

java - Android ExpandableListActivity 问题

android - 新的可扩展 ListView 高度可定制

android - ScaleGestureDetector.OnScaleGestureListener.onScaleEnd() 方法没有被击中