通过数据绑定处理事件与分配给Activity中的方法的onClick

时间:2016-09-07 22:56:53

标签: android

最近我一直在阅读android中的aboout数据绑定。我知道如何在更新ui时有用,但事件处理的优势是什么?在XML header{ position:relative; } #social { li {list-style: none; padding:3px; float:right; color:darken(@brand- primary,25); position:absolute; } } // main Header header { #logo { padding:0px 0; } } // Nav bar additional overrides: this is in on top of those in variables.less // Remove excess borders .navbar-default { border-top:none; border-left: 0; border-right: none; margin-top:30px; padding-bottom:10px; font-family: 'Montserrat', sans-serif; margin-bottom: 0; font-size:18px; border-color: #333; background-colour:#333; } .navbar-default .navbar-nav > li > a:hover, .navbar-default .navbar-nav > li > a:focus { border-bottom: 2px solid @brand-primary !important; } @border-radius-base: 3px; @border-radius-large: 3px; @border-radius-small: 3px; @grid-gutter-width: 0px; //Navbar overrides @navbar-default-border: 2px; @navbar-border-radius: 2px; @navbar-default-color: #fff; @navbar-default-bg: #333; @navbar-default-border: @brand-primary; @navbar-default-link-hover-bg: transparent; // Navbar links @navbar-default-link-color: #000; @navbar-default-link-hover-color: #000; // Navbar toggle @navbar-default-toggle-hover-bg: blue; @navbar-default-toggle-icon-bar-bg: @brand-primary; @navbar-default-toggle-border-color: @brand-primary; @grid-float-breakpoint: 700px; @dropdown-link-hover-bg: #000; @dropdown-link-color: @brand-primary; 中为活动中的方法分配似乎与使用较少的代码一样。 我什么时候应该使用哪个?

1 个答案:

答案 0 :(得分:6)

  

在XML中分配android:onClick到一个活动中的方法对我而言似乎只需要更少的代码

首先,android:onClick仅适用于某项活动。使用数据绑定进行事件处理允许您将该事件路由到某个其他形式的控制器或演示者(例如,片段)。

其次,android:onClick仅适用于该事件。使用数据绑定进行事件处理可以处理其他类型的事件,替换OnLongClickListenerOnTouchListener等。

第三,android:onClick仅路由到具有固定参数列表的方法。使用数据绑定进行事件处理允许您使用Java 8样式的lambda表达式路由到具有不同参数列表的方法,包括您可能已注入布局的变量(例如,与此关联的RecyclerView位置布局)。

  

我什么时候应该使用哪个?

如果您正在使用数据绑定,请在可行的情况下将其用于事件处理。数据绑定对于大型项目很有用,在这些项目中,您可能会发现我列出的功能很有用。

如果您未在项目中使用数据绑定,请使用android:onClick