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。

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

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

那么,给定一个MotionEventExpandableListView如何将其转换为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 回答