Android-LiveData

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
在這裏插入圖片描述
測試結果
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章