DataBinding onClick的七種點(diǎn)擊方式
最近在學(xué)習(xí)DataBinding的使用,中間遇到了不少的坑,記錄以下,幫助以后學(xué)習(xí)DataBinding的朋友。
有一個(gè) ViewModel 類,有一個(gè) xml,xml 綁定了 ViewModel .
1. @{click}
//xml:
<Button
android:layout_width="match_parent"
android:layout_height="48dp"
android:onClick="@{click}"
/>
//ViewModel:
public void click(View view){
}
2. 不帶參數(shù):@{() -> viewModel.click()}
//xml:
<Button
android:layout_width="match_parent"
android:layout_height="48dp"
android:onClick="@{() -> viewModel.click()}"
/>
//ViewModel:
public void click(){
}
3. @{viewModel::click}
//xml:
<Button
android:layout_width="match_parent"
android:layout_height="48dp"
android:onClick="@{viewModel::click}"
/>
//ViewModel:
public void click(View view){
}
tip: 如果是在其它類中設(shè)置點(diǎn)擊方法,如 EventHandlers.java, 其實(shí)與上面一致
//xml:
<variable
name="handler"
type="com.xx.xxx.EventHandlers" />
<Button
android:layout_width="match_parent"
android:layout_height="48dp"
android:onClick="@{handler::click}" />
// UI類:綁定handler,如綁定ViewModel那樣
EventHandlers handler = new EventHandlers();
binding.setHandler(handler);
// EventHandlers 執(zhí)行click事件
public void click(View view){
//do
}
4. 帶參數(shù):@{() -> viewModel.click(obj.id)}
//xml:
<variable
name="viewModel"
type="com.xx.xxx.ViewModel" />
<variable
name="obj"
type="com.xx.xxx.User" />
<Button
android:layout_width="match_parent"
android:layout_height="48dp"
android:onClick="@{() -> viewModel.click(obj.id)}"
/>
//ViewModel:
public void click(long id){
//do
}
5. ObservableField<OnClickListener>
//xml:
<variable
name="iconView"
type="com.xxxxx.IconView" />
<RelativeLayout
android:id="@+id/rl_icon_view"
android:layout_width="match_parent"
android:layout_height="55dp"
android:onClick="@{iconView.clickListener}"
>
//IconView:
public final ObservableField<OnClickListener> clickListener=new ObservableField<>();
//xml所在的Activity類:
binding.iconView.clickListener.set(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(),"iconView",Toast.LENGTH_SHORT).show();
}
});
6. 帶參數(shù)
android:onClick="@{()->loadingModel.chooseLang(2)}"
public void chooseLang(int language) {
LogUtil.i(TAG, "language=" + language);
}
7. 帶view的參數(shù)
//xml:
<variable
name="listener"
type="test.carrie.todomvvmtest.ui.OnTaskItemListener"/>
android:onClick="@{(view)->listener.onCheckBoxClick(obj,view)}"
//adapter:
public void onCheckBoxClick(ToDo entity, View v) {
}
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Android中AlertDilog顯示簡(jiǎn)單和復(fù)雜列表的方法
這篇文章主要介紹了Android中AlertDialog顯示簡(jiǎn)單和復(fù)雜列表的方法,結(jié)合實(shí)例形式分析了Android的AlertDialog創(chuàng)建列表顯示對(duì)話框的相關(guān)方法與常見(jiàn)操作技巧,需要的朋友可以參考下2016-08-08
利用Android實(shí)現(xiàn)一種點(diǎn)贊動(dòng)畫(huà)效果的全過(guò)程
最近做項(xiàng)目需要實(shí)現(xiàn)點(diǎn)贊動(dòng)畫(huà),下面這篇文章主要給大家介紹了關(guān)于利用Android實(shí)現(xiàn)一種點(diǎn)贊動(dòng)畫(huà)效果的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
Android Imageloader的配置的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android Imageloader的配置的實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-07-07
Android實(shí)現(xiàn)Gesture手勢(shì)識(shí)別用法分析
這篇文章主要介紹了Android實(shí)現(xiàn)Gesture手勢(shì)識(shí)別用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android基于Gesture實(shí)現(xiàn)手勢(shì)識(shí)別的原理與具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-09-09
Android startActivityForResult實(shí)例詳解
這篇文章主要介紹了Android startActivityForResult實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-05-05
Android里實(shí)現(xiàn)退出主程序的提示代碼
當(dāng)用戶選擇"確定",就退出當(dāng)前的對(duì)話框。其中,有個(gè)很重要的函數(shù),Activity.finish(),通過(guò)調(diào)用這個(gè)函數(shù),退出當(dāng)前運(yùn)行的整個(gè)Android程序2013-06-06
Android Studio使用ButterKnife和Zelezny的方法
這篇文章主要為大家詳細(xì)介紹了Android Studio使用ButterKnife和Zelezny的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
Android實(shí)現(xiàn)氣泡布局/彈窗效果 氣泡尖角方向及偏移量可控
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)氣泡布局/彈窗效果,可控制氣泡尖角方向及偏移量,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08
Android單項(xiàng)綁定MVVM項(xiàng)目模板的方法
這篇文章主要給大家介紹了關(guān)于Android單項(xiàng)綁定MVVM項(xiàng)目模板的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)各位Android開(kāi)發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04

