【问题标题】:Android list tap event delegationAndroid列表点击事件委托
【发布时间】:2011-02-18 22:04:15
【问题描述】:

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

【问题讨论】:

    标签: android listview event-handling event-delegation


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 您提出了很好的观点并将相同的处理程序分配给所有这些处理程序,然后切换单个处理程序内部的处理方式听起来是最好的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    相关资源
    最近更新 更多