这似乎不是我遇到麻烦的典型视图布局。
我有两个listViews。
每个listView
都有touchListener
(其目的是通过调用dispatchTouchEvent()来同步滚动到另一个listView)
ListView
还有onItemClickListener
来处理listView行的点击次数。
一切都按照预期在这里工作。
我想在clickListener
行添加另一个subview-group of the listView's
来处理子视图上的点击事件。
附加此clickListener后,我看到listView的滚动并不总是有效。
我怀疑它是因为这个子视图的clickListener在父(listView)的touchListener之前检查触摸事件(以查看它确实是click
)。
我可以想到这个问题的两个解决方法。
将touchListener而不是clickListener附加到子级,并为return false
事件以外的所有触摸事件设置FINGER_UP
。
在FINGER_UP
事件中,我执行了我最初在onClickListener中使用的方法
public boolean 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);
}
});
答案 0 :(得分:0)
我想将另一个clickListener添加到listView行的subview-group,以处理子视图上的click事件。
您只需编写自定义适配器并在getView()
中分配OnClickListener。您可以查看问题:Android GridView Button Click Handler,例如代码。
还有一段时间我回答Android. Scrolling 2 listviews together您是否使用类似的方法同步ListViews?当我将两个答案结合起来时,我的应用程序就会按照您想要的方式运行。我希望这会有所帮助。