为了账号安全,请及时绑定邮箱和手机立即绑定

监听器绑定如何实现onTextChange

监听器绑定中TextView实现的onClickListenerBingding中的数据是Activity传给了XML后通过方法传回了Activity 并Toast显示,这个Toast显示的数据是已知的并且是固定的,如果我想用监听器绑定实现onTextChange,该如何获取到EditText中的数据并传递给Activity并Toast显示呢?

正在回答

2 回答

额,其实我是想问如何实现:

<EditText

            android:onTextChanged="@{() -> person.onTextChanged(这里面不知道怎么实现)}"

            android:layout_width="match_parent"

            android:layout_height="wrap_content" />


0 回复 有任何疑惑可以回复我~

不知道我写的代码对不对你的问题。

我的理解是:

在EditText上绑定一个onTextChange事件,每当EditText中输入的内容改变了,使用Toast显示出来。

下面贴上我的代码

// MainActivity.java
public class MainActivity extends AppCompatActivity {

    private ActivityMainBinding mBinding;
    private User mUser;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.activity_main);
        mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        mUser = new User("Oz", "Young");
        mBinding.setUser(mUser);
        mBinding.setPerson(new Person());
    }

    public class Person {
        public void onClick(User user) {
            Toast.makeText(MainActivity.this, user.getFirstName(), Toast.LENGTH_SHORT).show();
        }

        public void onTextChanged(CharSequence s, int start, int before, int count) {
            mUser.setFirstName(s.toString());
            mBinding.setUser(mUser);
            // s 就是EditText中输入的值
            // 使用Toast打印
            Toast.makeText(MainActivity.this, s.toString(), Toast.LENGTH_SHORT).show();
        }
    }
}
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data>

        <variable
            name="user"
            type="com.android.oz.databindingdemo.User" />
        <!--记得这里需要将Person传递进来-->
        <variable
            name="person"
            type="com.android.oz.databindingdemo.MainActivity.Person" />
    </data>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <!-- 绑定onTextChanged -->
        <!-- 这里使用::是为了与.区分开,使用::能清楚的知道是调用方法 -->
        <EditText
            android:onTextChanged="@{person::onTextChanged}"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <TextView
            android:onClick="@{() -> person.onClick(user)}"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@{user.firstName}" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@{user.lastName}" />
    </LinearLayout>
</layout>


0 回复 有任何疑惑可以回复我~
#1

慕粉1469012311 提问者

额,其实我是想问如何实现: <EditText android:onTextChanged="@{() -> person.onTextChanged(这里面不知道怎么实现)}" android:layout_width="match_parent" android:layout_height="wrap_content" />
2017-08-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

监听器绑定如何实现onTextChange

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信