DataBinding 双向绑定
DataBinding 事件绑定
引用 类方法
使用 运算符
双向绑定在以前的学习过程中,我们一般只是数据的单向流动,比如使用TextView将数据展现出来,基本就是进行“读”操作,但是在某些情况下,比如当我们使用EditText更新信息时,仅仅使用单向的数据流动是不能满足条件的,这时我们就需要使用DataBinding的双向绑定。
双向绑定的使用是十分简单的,我们只需要改变一下布局文件即可,将我们原来单向绑定的固定模式@{}改为@={}。
同样是在活动中进行初始化即可
初始化赋值
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
private DataBase dataBase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
dataBase = new DataBase(new ObservableField(),new ObservableField());
binding.setDatabase(dataBase);
binding.setUpdata(new Updata());
}
public class Updata{
public void changeUsername(Editable editable) {
dataBase.getUsename().set(editable.toString());
}
public void changePassword(Editable editable) {
dataBase.getPassword().set(editable.toString());
}
}
}
(2)方法引用
定义接口public class MainActivity extends AppCompatActivity implements UserClickListener{
private ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this,R.layout.activity_main);
binding.setListener(this);
}
@Override
public void click(View view) {
Toast.makeText(this,"方法引用",Toast.LENGTH_SHORT).show();
}
}
在布局中声明:
引用类方法
定义类方法,类中的方法用static修饰活动中代码与上面相同
在布局文件使用运算符
(1)普通的算数运算符我们都是可以在布局文件中使用的
android:text="@{String.valueOf(78+34)}"
(2)字符串的合并
android:text="@{data.password + data.name}"
(3)?:
android:visibility="@{data.status ? View.VISIBLE : View.GONE}"
(4)??:取第一个不是 null 的值
android:text="@{data.title ?? data.name}"