DataBinding基本使用(2)
来源:互联网 发布:淘宝晚礼服推荐 编辑:程序博客网 时间:2024/06/05 01:57
咱们直接点,直接上实战,把常用的标签的用会了,用熟了
总的有以下几点
- 数据绑定的几种方式
- 点击事件绑定的几种方式
- 双向绑定数据
- RecycleView的数据绑定
- @InverseMethod 标签的使用
大家别急,其他的标签在相应的点里都会应用到
数据绑定的几种方式
<variable name="tv1data" type="String"></variable> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.scs.myapplication.MainActivity"> <TextView android:id="@+id/tv_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{tv1data}" /> <TextView android:id="@+id/tv_2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
改xml布局文件为MainActivity的
其实当你编写好布局文件的时候,AS就已经帮你把类和xml之间连接的枢纽类创建好了。
private ActivityMainBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);// setContentView(R.layout.activity_main); binding = DataBindingUtil.setContentView(this, R.layout.activity_main); binding.setTv1data("tv1_data");//加载数据 way1 binding.tv2.setText("tv2_data");//加载数据 way2}
没错,ActivityMainBinding就是哪个数据,有人会问那么这个类在哪里,那么我有一句话不知当讲不当讲,在基本使用(1)中的贴图,你可以清清楚楚的看到它在哪里。
我们要通过ActivityMainBinding将Activity和布局稳健想绑定,故我们要注释调它 setContentView(R.layout.activity_main);
我发现~~~ 自从使用了DataBinding,我们再也不要findviewbyid了,使用BufferKnife不存在的。哈哈其实萝卜青菜 各有所爱。
方法1:就是传入我们在xml使用的的数据源,去给对应的View设置数据。setTv1data方法,是系统帮我们生产的。
方法2:就是利用id,通过ActivityMainBinding来找到对应的View,来给他设置参数
点击事件绑定的几种方式
点击的事件对应的方法从哪儿来?从对应的类来。对应的类在哪里?需要我们去写入类对应的地址。
这不点击事件的绑定不就解决了? 这时候 就需要用到这两个标签
1.通过 来导入点击事件所对于的类
2.通过已数据的方式来导入点击事件对应的类
方法1:
通过variable的方式,去引入一个接口
public interface IClick { void onClick1(View view); void onClick2(View view); void onClick3(View view);}<variable name="iclick" type="com.example.scs.myapplication.IClick"></variable><Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="@{iclick.onClick1}" android:text="点击事件用法2" /> binding.setIclick(new IClick() { @Override public void onClick1(View view) { Toast.makeText(view.getContext(), "方法1", Toast.LENGTH_SHORT).show(); } @Override public void onClick2(View view) { } @Override public void onClick3(View view) { } });
方法2:
还可以在某个类中,定义一个方法,将该类或者的方式引入
<variable name="main" type="com.example.scs.myapplication.MainActivity"></variable> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="@{main.onBtnChange}" />public void onBtnChange(View view) { Toast.makeText(view.getContext(), "方法2", Toast.LENGTH_SHORT).show(); }
<import type="com.example.scs.myapplication.MainActivity"></import> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="@{MainActivity.onBtnChange}" />
常用的事件绑定方式就这些。这时候有人会问如果是带参数的方法呢?里面的参数要如何去传递?别急下面就来讲解
方法3:
带参数的点击事件
<variable name="iclick" type="com.example.scs.myapplication.IClick"></variable> <import type="android.view.View"></import> <variable name="tv1data" type="String"></variable><Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="带参数的方法" android:onClick="@{(view)->iclick.onClick4(view,tv1data)}"/> binding.setIclick(new IClick() { @Override public void onClick4(View view, String msg) { Toast.makeText(view.getContext(), msg + "", Toast.LENGTH_SHORT).show(); } });
若有错误的地方,请指出,大家共同进步!
- DataBinding基本使用(2)
- DataBinding基本使用(1)
- DataBinding基本使用(3)
- DataBinding基本使用(4)
- DataBinding基本使用(5)
- DataBinding的基本使用(一)
- DataBinding的基本使用(二)
- DataBinding的基本使用(四)
- Android DataBinding(一) 基本使用
- DataBinding基本使用
- databinding基本使用
- DataBinding的基本使用
- DataBinding的基本使用(三)
- DataBinding的基本使用(五)
- DataBinding使用教程(一):配置与基本使用
- DataBinding使用教程(一):配置与基本使用
- DataBinding系列(二):DataBinding的基本用法
- DataBinding 学习系列(2)详解DataBinding在xml中的使用
- 工程师软技能6:理财人生精神
- QGC的MissionController
- 刷题——POJ 2395 Out of Hay
- CDH元数据的主从备份
- mysql查询多个字段同时满足多个条件,取并集
- DataBinding基本使用(2)
- PHP 使用SOAP调用接口开发,偶尔会报错
- 安卓 底部导航栏的封装,支持show or hidden 或者 replace 方式
- Android开发入门基础
- 分布式工程中,各工程的配置问题
- 关于安卓setBackgroundColor中Drawable复用导致背景重复改变
- 在 webpack 中使用 ECharts
- 自定义虚线格式的EditText输入框
- Leetcode算法学习日志-680 valid Palindrome II