【问题标题】:Data Binding Not Working Android数据绑定不工作 Android
【发布时间】:2017-01-13 17:24:58
【问题描述】:

我正在使用数据绑定库,我得到了它,但有些问题我似乎无法得到。对于初学者

这是我的 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}"

它不起作用,我收到一条警告说未知属性,如果我尝试编译它,我得到一个数据绑定不存在错误。我也在使用一个包含 2 个单选按钮的单选按钮,我想获取选择了哪个单选按钮使用数据绑定。我找到了使用我尝试使用的 android:onCheckedChanged 的​​在线资源,但我再次收到错误消息,说绑定不存在且属性未知

【问题讨论】:

  • 也发布您的错误。特别是它说未知属性的部分。也许它只使用viewModel.username

标签: android data-binding onclicklistener android-databinding 2-way-object-databinding


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多