[英]Data Binding Not Working Android
我正在使用數據綁定庫,因此可以使用它,但是有些問題似乎無法解決。
這是我的xml布局activity_login.xml的一部分
<data>
<variable
name="viewModel"
type="com.ViewModel.LoginViewModel" />
</data>
<EditText
android:id="@+id/edit_text_username_register"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/username"
android:imeOptions="actionNext"
android:inputType="text"
android:textSize="15sp"
android:theme="@style/EditTextTheme"
app:addTextChangedListener="@{viewModel.getUsername}" />
而且我的ViewModel包含
public TextWatcher getUsername() {
return new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.i("username", s.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
};
}
上面的代碼是根據用戶類型獲取用戶名的,這是使用數據綁定的正確方法還是我做錯了? 問題是當我嘗試通過添加的方式在網上找到它的方式時
android:addTextChangedListener="@{viewModel.getUsername}"
它不起作用,並且我收到警告說未知屬性,如果我嘗試對其進行編譯,則會得到數據綁定不存在的error.I也正在使用包含2個單選按鈕的單選按鈕,我想獲取使用數據綁定選擇了哪個按鈕。我找到了嘗試使用android:onCheckedChanged的在線資源,但再次收到錯誤消息說綁定不存在且屬性未知
在這里, InverseBindingMethod
是個好東西,請舉一個例子。
類
public class Handlers {
public void onKeywordChanged(CharSequence s, int start, int before, int count) {
// Your code here
}
}
布局
<layout>
<data>
<variable name="handlers"
type="my.package.Handlers" />
</data>
...
<EditText
...
android:onTextChanged="@{handlers::onKeywordChanged}"
/>
</layout>
有關更多信息, 請訪問https://developer.android.com/reference/android/databinding/InverseBindingMethod.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.