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); } }

浙公网安备 33010602011771号