慕粉1469012311
2017-08-09 22:29
监听器绑定中TextView实现的onClickListenerBingding中的数据是Activity传给了XML后通过方法传回了Activity 并Toast显示,这个Toast显示的数据是已知的并且是固定的,如果我想用监听器绑定实现onTextChange,该如何获取到EditText中的数据并传递给Activity并Toast显示呢?
额,其实我是想问如何实现:
<EditText
android:onTextChanged="@{() -> person.onTextChanged(这里面不知道怎么实现)}"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
不知道我写的代码对不对你的问题。
我的理解是:
在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>Android Data Binding实战-入门篇
17200 学习 · 35 问题
相似问题