MVVM_xml 中引用其它控制元件資料 以及 無法生成ViewDatabinding 類
技術標籤:MVC/MVP/MVVM框架databindingmvvm
目錄
2..2 在ViewModel 中,使用了@Bindable 修飾的函式,返回值為非boolean 型別的, 在函式名注意加上get
2.2 引用其它控制元件資料注意要寫完整的getXXx, 如username.getText()
MVVM 中,xml 佈局檔案用到的大部分資料都是由ViewModel 提供, 也可以引用同一個xml 其它控制元件的資料,
1.xml 中引用其它控制元件資料
如佈局檔案:
<data> <variable name="loginViewModel" type="com.example.mvplogindemo.viewmodel.LoginViewModel" /> </data> <EditText android:id="@+id/username" .... /> <EditText android:id="@+id/username" .... />
<Button
android:id="@+id/login_button"
android:onClick="@{() -> loginViewModel.verify(username.getText().toString(), password.getText().toString())}"/>
而函式 LoginViewModel. verify(String username, String password), 需要兩個輸入的字串, xml 中使用了兩個EditText 的文字。
2.無法生成ViewDatabinding 類
2..2 在ViewModel 中,使用了@Bindable 修飾的函式,返回值為非boolean 型別的, 在函式名注意加上get
boolean 返回值的函式名可以為 isXXXX(), 其它為 getXXX().
2.2 引用其它控制元件資料注意要寫完整的getXXx, 如username.getText()
如果寫成Koltin 的方式 xxx.text, 則會報以下錯誤:
錯誤: 找不到符號 位置: 程式包 com.example.mvplogindemo.databinding FAILURE: Build failed with an exception. * What went wrong: |
猜測可能是由於當前載入佈局檔案的Activity 是用Java 語言寫的,所以生成的AcitivityLoginUsingVmBindingImpl 也是Java, 因此要使用Java 的getText().