Android列表点击事件委托

时间:2011-02-18 22:04:15

标签: android listview event-handling event-delegation

我有一个使用数据库显示某些数据的列表。用户可以对每个列表项执行多个操作,而不是实现上下文菜单,用户使用长按来显示可能的操作列表我想为每个项添加按钮,以便用户只需点击按钮并执行操作。列表可能很大,并且每个列表项的每个按钮附加一个监听器是过度的,所以我想做Javascript程序员用事件冒泡做的事情,即将一个处理程序附加到顶级元素,如整个列表,然后让点击事件冒泡到它。我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

View.OnClickListener.onClick()不会冒泡,因此您提出的解决方案无效。

OTOH,View.OnTouchListener.onTouch()确实会冒泡,所以可能会使用它,但它需要您手动处理MotionEvent的向下/向上以检测点击。

此外,如果你创建了很多按钮,那么你确定添加onCLick处理程序会带来很多开销,特别是因为你可以为所有按钮注册相同的方法。

您尝试做的事情听起来像是过早优化。在尝试处理之前,请确保影响用户的实际开销。