栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Andriod --- JetPack (四):DataBinding + LiveData +ViewModel 简单实例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Andriod --- JetPack (四):DataBinding + LiveData +ViewModel 简单实例

一、DataBinding

1.让布局页面承担了部分原本属于页面的工作,是页面文件和布局耦合度进一步降低。页面文件:Activity。布局:activity_main.xml

2.减少了很多 findViewById 与 OnClickListener
布局文件可以包含一些简单的业务逻辑

二、LiveData

在 ViewModel 中的数据发生变化时通知页面
LiveData 与 ObservableField 同样可以实现双向绑定
这里的 Model 层下面的例子未呈现,等过后学到了 JetPack - Room 自然就懂了

三、ViewModel

1.它是介于 View(视图)和 Model(数据模型)直接的桥梁
2.使视图和数据能够分离,也能够保持通信
https://blog.csdn.net/qq_43290288/article/details/123478346

四:DataBinding + LiveData +ViewModel 实例

在 build.gradle 中添加 DataBinding 支持

android {
    dataBinding {
        enabled = true
    }
}

自定义MyViewModel.java

import android.view.View;

import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;

public class MyViewModel extends ViewModel {
    private MutableLiveData aTeamScore;
    private MutableLiveData bTeamScore;

    public MutableLiveData getaTeamScore() {
        if(aTeamScore == null) {
            aTeamScore = new MutableLiveData<>();
            aTeamScore.setValue(0);
        }
        return aTeamScore;
    }
    public MutableLiveData getbTeamScore() {
        if(bTeamScore == null) {
            bTeamScore = new MutableLiveData<>();
            bTeamScore.setValue(0);
        }
        return bTeamScore;
    }
    public void aTeamAdd(View view) {
        aTeamScore.setValue(aTeamScore.getValue() + 1);
    }
    public void bTeamAdd() {
        bTeamScore.setValue(bTeamScore.getValue() + 1);
    }
}

MainActivity.java

import androidx.appcompat.app.AppCompatActivity;
import androidx.databinding.DataBindingUtil;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;

import android.database.DatabaseUtils;
import android.os.Bundle;

import com.example.mvvm20220312.databinding.ActivityMainBinding;
import com.example.mvvm20220312.viewmodel.MyViewModel;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); // ActivityMainBinding 对应 activity_main.xml
        MyViewModel viewModel  = new ViewModelProvider(this, new ViewModelProvider.AndroidViewModelFactory(getApplication())).get(MyViewModel.class);
        binding.setViewModel(viewModel); // DataBinding 与 ViewModel 绑定
        binding.setLifecycleOwner(this); // 要想在绑定类中使用 LiveData 对象,我们需要指定生命周期所有者来定义 LiveData 对象的范围。在绑定类实例化后指定 activity 作为生命周期所有者
    }
 }

activity_main.xml



    
    
        
    

    

        

        

        

学习内容来自动脑学院~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/763129.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号