android - onClick 时获取其他 View 的值。数据绑定(bind)

标签 android xml android-databinding

我有带有 android 数据绑定(bind)的 xml:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>
        <variable name="presenter" type="com.myapp.presentation.presenter.CreateUserPresenter"/>
    </data>
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <android.support.design.widget.TextInputLayout
                    android:id="@+id/firstNameInput"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="16dp"
                    android:paddingTop="8dp"
                    android:paddingRight="16dp"
                    android:paddingBottom="8dp">
                    <android.support.design.widget.TextInputEditText
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:inputType="textCapSentences"
                        android:hint="@string/first_name" />
                </android.support.design.widget.TextInputLayout>
                <android.support.design.widget.TextInputLayout
                    android:id="@+id/secondNameInput"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="16dp"
                    android:paddingTop="8dp"
                    android:paddingRight="16dp"
                    android:paddingBottom="8dp">
                    <android.support.design.widget.TextInputEditText
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:inputType="textCapSentences"
                        android:hint="@string/second_name" />
                </android.support.design.widget.TextInputLayout>
                <android.support.v7.widget.AppCompatButton
                    android:id="@+id/btnCreate"
                    style="@style/Widget.AppCompat.Button.Colored"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="12dp"
                    android:text="@string/create"
                    android:onClick="@{(view) -> presenter.createUser()}" />    
            </LinearLayout>    
</layout>

CreateUserPresenter.class:

public class CreateUserPresenter {

    public CreateUserPresenter () {}

    public void createUser(String firstName, String lastName) {

    }
}

如何在单击按钮时在方法 createUser() 中传递输入值(firstNameInputsecondNameInput)?

android:onClick="@{(view) -> presenter.createUser()}"

最佳答案

在使用 DataBinding 时遵循 MVVM 是最佳实践,但是对于您的代码,您也可以传递字符串值。

试试这个

android:onClick="@{(view) -> presenter.createUser(firstNameInput.getEditText().getText().toString(),secondNameInput.getEditText().getText().toString())}"

关于android - onClick 时获取其他 View 的值。数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40995071/

相关文章:

Android Gradle 3.0 如何排除多组

java - Android - 下载网页内容错误 - 跳过 X 帧!应用程序可能在其主线程上做了太多工作

java - JAXB 解码 - 未找到具有默认根元素的描述符...

java - SAX 解析器;读取特殊字符时出现错误

XML 架构 : Setting a default value for a complexType?

java - 如何从 BindingAdapter 访问数据绑定(bind)变量

java - 无法获取 NotificationCompat.Builder 2 arg 构造函数

android - 在第一个位置插入的项目在向上滚动之前是不可见的

android - 如何使用数据绑定(bind)直接在 xml 布局文件上设置 onTouchListener?

android - 数据绑定(bind) - 必须首先将 Lambda 表达式解析为其 setter 以获取类型