LiveData 是將數據和UI分離。將數據獨立到一個ViewModel裏面
ViewModelTest類
定義了一個變量item
package com.example.viewmodel02;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
public class ViewModelTest extends ViewModel {
private MutableLiveData<Integer> item;
public MutableLiveData<Integer> getItem() {
if(this.item == null){
this.item = new MutableLiveData<>();
this.item.setValue(0);
}
return item;
}
public void addItem(int n){
this.item.setValue(this.item.getValue()+n);
}
}
在activity_mian中就可以調用這個類來使用item變量
通過設置一個Observe來查看item的改變,然後改變textview裏面的值
package com.example.viewmodel02;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProviders;
public class MainActivity extends AppCompatActivity {
ViewModelTest viewModelTest;
TextView textView;
ImageButton buttonlike;
ImageButton buttondislike;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int textnumber = R.id.text00;
int buttonnumber = R.id.button1;
int buttonnumber2 = R.id.button2;
textView = findViewById(textnumber);
buttonlike = findViewById(buttonnumber);
buttondislike = findViewById(buttonnumber2);
viewModelTest = ViewModelProviders.of(this).get(ViewModelTest.class);
viewModelTest.getItem().observe(this, new Observer<Integer>() {
@Override
public void onChanged(Integer integer) {
textView.setText(String.valueOf(integer));
}
});
buttonlike.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewModelTest.addItem(1);
}
});
buttondislike.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewModelTest.addItem(-1);
}
});
}
}
layout
點擊紅心+1 點擊空心-1
測試結果