2. jetpack-----LiveData(感知数据的变化,自动刷新界面)
  LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。
自动刷新数据。
写一个点赞和踩的功能

MyViewModelLiveData
package com.example.localization; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; public class MyViewModelWithLiveData extends ViewModel{ private MutableLiveData<Integer> likedNumber; public MutableLiveData<Integer> getLikedNumber() { //最好get的时候如果为空就new一下 其实不写也行吧 if (likedNumber == null){ likedNumber = new MutableLiveData<>(); likedNumber.setValue(250); } return likedNumber; } public void addLikedNumber(int n) { likedNumber.setValue(likedNumber.getValue()+n); } }
Main
package com.example.localization; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProviders; public class MainActivity extends AppCompatActivity { MyViewModelWithLiveData modelWithLiveData; TextView textView; Button likeButton; Button dislikeButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初始化各种button以及textview likeButton = findViewById(R.id.button); dislikeButton = findViewById(R.id.button3); textView = findViewById(R.id.textView); /*********************************数据观察***************************************/ //获得ViewModelProvider的实例 modelWithLiveData = new ViewModelProvider(this,new ViewModelProvider.NewInstanceFactory()).get(MyViewModelWithLiveData.class); //当我们在ViewModelWithLiveData中的数据发生变化的时候就会调用该函数 modelWithLiveData.getLikedNumber().observe(this, new Observer<Integer>() { @Override public void onChanged(Integer integer) { textView.setText(String.valueOf(integer)); } }); /*********************************点赞按钮功能**************************************/ likeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //点赞数加一 modelWithLiveData.addLikedNumber(1); } }); /*********************************踩 按钮功能**************************************/ dislikeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //点赞数减一 modelWithLiveData.addLikedNumber(-1); } }); } }
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号