簡體   English   中英

數據綁定無法正常運行的Android

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM