LiveData

LiveData 遵循观察者模式。当底层数据发生变化时,LiveData 会通知 Observer 对象。

无需在每次应用数据发生变化时更新界面,因为观察者会完成更新。

LiveData因为有了检查者而变得有活力,也正是因为检查者,才能满足更新数据变化

viewWithLiveData.getLikedNmuber().observe(this, new Observer<Integer>() {
            @Override
            public void onChanged(Integer integer) {
                textView.setText(String.valueOf(integer));
            }
        });

 

 

MainActivity.java

package com.example.livedatatest;

import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;

import android.os.Bundle;
import android.telephony.ims.ImsManager;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    ViewWithLiveData viewWithLiveData;
    TextView textView;
    ImageButton imageButton1,imageButton2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView=findViewById(R.id.textView);
        imageButton1=findViewById(R.id.imageButton);
        imageButton2=findViewById(R.id.imageButton2);
        viewWithLiveData=new ViewModelProvider(this,new ViewModelProvider.NewInstanceFactory()).get(ViewWithLiveData.class);
        viewWithLiveData.getLikedNmuber().observe(this, new Observer<Integer>() {
            @Override
            public void onChanged(Integer integer) {
                textView.setText(String.valueOf(integer));
            }
        });
        imageButton1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                viewWithLiveData.addLikeNumber(1);
            }
        });
        imageButton2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                viewWithLiveData.addLikeNumber(-1);
            }
        });
    }
}
ViewWithLiveData
package com.example.livedatatest;

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

public class ViewWithLiveData extends ViewModel {
    private MutableLiveData<Integer> LikedNmuber;

    public MutableLiveData<Integer> getLikedNmuber() {
        if(LikedNmuber==null){
            LikedNmuber=new MutableLiveData<>();
            LikedNmuber.setValue(0);
        }
        return LikedNmuber;
    }
    public void addLikeNumber(int n){
        LikedNmuber.setValue(LikedNmuber.getValue()+n);
    }
}

 

posted @ 2022-01-04 20:09  年年ℓ  阅读(220)  评论(0)    收藏  举报