欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DataBinding

程序员文章站 2022-06-09 20:18:38
...
  • DataBinding是谷歌官方发布的一个框架,它的目的是降低布局和逻辑的耦合性,使代码的逻辑更清晰。它能够很简单的省去findViewById()的步骤,大量减少Activity的代码,数据直接能写在layout文件上,而且它能自动进行空检测,很多地方对象为空不会引起空指针异常。 
  • 配置   

DataBinding


  • 修改xml文件
<?xml version="1.0" encoding="utf-8"?>
<layout
    xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <import type="com.sdhmw.dtwb2.model.Table_1" />
        <import type="com.sdhmw.dtwb2.main.Fragment_Table_1.OnClickListener_Table_1" />


        <variable
            name="table"
            type="Table_1"/>

        <variable
            name="click"
            type="OnClickListener_Table_1" />



    </data>
<TextView
                        android:tag="@string/BG_BH"
                        android:onClick="@{click.onClick}"
                        android:text="@{table.BG_BH}"
                        android:id="@+id/tv_BG_BH"
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:background="@drawable/table_tv_click"
                        android:gravity="center"
                        android:padding="8dp"
                        android:textSize="15sp" />


private static FragmentTable1Binding binding;
@Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {


        binding = DataBindingUtil.inflate(inflater, R.layout.fragment_table_1, container, false);


        View rootView = binding.getRoot();


        initData();

        initView(rootView);

        initListener();


        return rootView;
    }

    private void initListener() {

        //click
        binding.setClick(new OnClickListener_Table_1());

    }

点击事件

//view绑定的onclick
    public class OnClickListener_Table_1 {

        public void onClick(View view) {


绑定Table

//绑定
        table = new Table_1();
        binding.setTable(table);



无非分两种情况:

一个是页面数据的显示:

当时一开始想使用Table_1里面的tostring解析json,后来就不用了。

table.setSGDWMC(list2.get(i).getSGDWMC());
binding.tvBGBH.setText()

另一个是页面数据的获取:

String BG_BH = binding.tvBGBH.getText().toString();