Coder Social home page Coder Social logo

android_databinding's Introduction

[TOP]

android MVVM

Android DataBinding 使用

定义

数据绑定库是一种支持库,借助该库,您可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。 布局通常是使用调用界面框架方法的代码在 Activity 中定义的。例如,下面的代码会调用 findViewById() 以查找 TextView 微件,并将其绑定到 viewModel 变量的 userName 属性:

android 官方文档

使用步骤

android节点下引入 dataBinding{ enabled=true }

创建实体 eg: User

    public class User extends BaseObservable {
    
    
        String name;
        int age;
    
    
        public User(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        @Bindable
        public String getName() {
            return name;
        }
    
    
        public void setName(String name) {
            this.name = name;
             notifyChange();
    //        notifyPropertyChanged(BR.m);
        }
    
        @Bindable
        public int getAge() {
            return age;
        }
    
    
        public void setAge(int age) {
            this.age = age;
            notifyChange();
        }
    
    
        public void update() {
            this.name = "wilson yang";
            this.age = 1232;
            notifyChange();
        }
    
    
    }

编辑布局

    <?xml version="1.0" encoding="utf-8"?>
    <layout xmlns:tools="http://schemas.android.com/tools">
    
        <data>
    
            <import type="com.wilson.android_databinding.model.User" />
    
            <variable
                name="user"
                type="com.wilson.android_databinding.model.User" />
    
    
        </data>
    
        <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center"
                android:orientation="vertical">
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@{user.name}" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@{String.valueOf(user.age)}" />
    
    
            </LinearLayout>
    
    
        </androidx.constraintlayout.widget.ConstraintLayout>
    </layout>

在使用的地方进行数据绑定

    public class DataBindingActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            DataBindingBinding binding = DataBindingUtil.setContentView(this, R.layout.data_binding);
            User user = new User("wilson", 11);
            binding.setUser(user);
            binding.setLifecycleOwner(this);
    
    
    
        }
    }

注意!!

DataBindingBinding 是对应data_binding布局生成的文件

Android LiveData 使用

定义

官方定义是:LiveData 是一个可被观察的数据持有类。与普通的被观察者(如 RxJava 中的 Observable)不同的是,LiveData 是生命周期感知的,也就是说,它能感知其它应用组件(Activity,Fragment,Service)的生命周期。这种感知能力可以确保只有处于 active 状态的组件才能收到 LiveData 的更新。详情可查看 Lifecycle。

参考

https://juejin.im/post/5bfb4d6a6fb9a049df23bc98

Android MVVM 实现参考

https://www.journaldev.com/22561/android-mvvm-livedata-data-binding

android_databinding's People

Contributors

yxwandroid avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.