0

这似乎不是我遇到问题的典型视图布局。

我有两个列表视图。

每个listView都有touchListener
(其目的是通过调用 dispatchTouchEvent() 到另一个 listView 来同步滚动)

ListView还必须onItemClickListener处理对 listView 行的点击。

到目前为止,一切都按预期工作。

我想在行中添加另一个clickListenersubview-group of the listView's处理子视图上的点击事件。

附加此 clickListener 后,我看到 listView 的滚动并不总是有效。

我怀疑它是因为这个子视图的 clickListenerclick在父(listView)的 touchListener 之前检查触摸事件(以查看它是否确实是 a )。

我可以想到两个解决这个问题的方法。

  1. 将 touchListener 而不是 clickListener 附加到子级,并将其return false用于除事件之外的所有触摸FINGER_UP事件。
    FINGER_UP事件中,我执行我最初在 onClickListener 中使用的方法

  2. 公共布尔 onInterceptTouchEvent (MotionEvent ev)

    实现这个方法来拦截所有的触摸屏运动事件。这使您可以在事件被分派给您的孩子时观看它们,并在任何时候获得当前手势的所有权。
    (好吧......我很困惑,我认为触摸事件首先进入子视图,如果孩子不处理触摸,则传播给父母......)

..如何实现方法1?
..请帮助我弄清楚#2并掌握触摸传递机制。

  • 编辑 - 这是我将 OnClickListener 添加到我的子视图的地方。

            viewHolder.layout_author.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent profileIntent = new Intent(ImageListAdapter.this.activity, ProfileActivity.class);
                        profileIntent.putExtra("JsonUser", jsonAlbumImage.jsonUser);
                        ImageListAdapter.this.activity.startActivity(profileIntent);
                    }
                });
    
4

1 回答 1

0

我想将另一个 clickListener 添加到 listView 行的 subview-group 以处理子视图上的单击事件。

您只需要编写一个自定义适配器并在getView(). 你可以看问题:Android GridView Button Click Handler for example code。

不久前我回答了Android。一起滚动 2 个列表视图您是否使用类似的方法来同步您的列表视图?当我结合这两个答案时,我的应用程序会按照您想要的方式运行。我希望这有帮助。

于 2012-12-28T07:17:40.810 回答