小工具知识网

当前位置: 首页 > 行业知识 > DataBinding+ViewModel+LiveData MVVM

行业知识

DataBinding+ViewModel+LiveData MVVM

2026-11-13 03:41:09 来源:互联网转载

Activity

package com.tiger.databinding7;import androidx.appcompat.app.AppCompatActivity;import androidx.databinding.DataBindingUtil;import androidx.databinding.ViewDataBinding;import androidx.lifecycle.MutableLiveData;import androidx.lifecycle.ViewModelProvider;import android.os.Bundle;import com.tiger.databinding7.databinding.ActivityMainBinding;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        ActivityMainBinding activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);        MyViewModel myViewModel = new ViewModelProvider(this).get(MyViewModel.class);        activityMainBinding.setViewModel(myViewModel);        activityMainBinding.setLifecycleOwner(this);    }}

viewModel

package com.tiger.databinding7;import androidx.lifecycle.MutableLiveData;import androidx.lifecycle.ViewModel;public class MyViewModel extends ViewModel {    private MutableLiveData aTeamScore;    private MutableLiveData bTeamScore;    private Integer aLast;    private Integer bLast;    //因为并发量不大,所以线程安全,就算多创建了 对象, 没有被引用也会被垃圾回收的 ,不会造成内存泄漏    public MutableLiveData getaTeamScore() {        //网络要在后台线程去执行不会阻塞主线程,用数据绑定来更新UI        if (aTeamScore == null){            aTeamScore  = new MutableLiveData();            //在 UI线程 里 用 setValue            //非UI 线程里用post            aTeamScore.setValue(0);        }        return aTeamScore;    }    public MutableLiveData getbTeamScore() {        if (bTeamScore == null){            bTeamScore  = new MutableLiveData();            //在 UI线程 里 用 setValue            //非UI 线程里用post            bTeamScore.setValue(0);        }        return bTeamScore;    }    public void aTeamAdd(int i){        saveLastScore();        aTeamScore.setValue(aTeamScore.getValue()+i);    }    public void bTeamAdd(int i){        saveLastScore();        bTeamScore.setValue(bTeamScore.getValue()+i);    }    public void undo(){        aTeamScore.setValue(aLast);        bTeamScore.setValue(bLast);    }    public void reset(){        aTeamScore.setValue(0);        bTeamScore.setValue(0);    }    //记录上一次的分数    private void saveLastScore(){        this.aLast = aTeamScore.getValue();        this.bLast = bTeamScore.getValue();    }}
                                                                                                                                                                                                

上一篇:socket怎么退出服务器?

下一篇:MeSH下载指南,一键获取资源,操作更便捷!