iT邦幫忙

2022 iThome 鐵人賽

DAY 18
0

LiveData | Android Jetpack

LiveData組件:在底層數據更改時自動通知視圖

如何使用

通常LiveData會和ViewModel一起使用來實現MVVM架構,當然LiveData也可以單獨使用。以下是LiveData和ViewModel一起使用的簡單範例。

步驟:

  1. 在ViewModel創建LiveData容器來保存數據。
  2. 在Activity/Fragment獲取ViewModel,通過ViewModel獲取到對應的LiveData。
  3. 給LiveData添加觀察者監聽,用來監聽LiveData中的數據變化。
  • 效果圖

  • ViewModel (MainViewModel)

public class MainViewModel extends ViewModel {
    private MutableLiveData<Integer> count;

    public MutableLiveData<Integer> getCount() {
        // 如果數據為空, 就初始化一個LiveData型別的容器, 並設定初始值
        if (count == null) {
            count = new MutableLiveData<>();
            count.setValue(0);
        }
        return count;
    }

    public void addCount() {
        count.setValue(count.getValue() + 1);
    }

    public void subCount() {
        count.setValue(count.getValue() - 1);
    }
}
  • UI (MainActivity)
public class MainActivity extends AppCompatActivity {
    private ActivityMainBinding binding;
    private MyViewModel model;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

        // 獲取ViewModel
        model = new ViewModelProvider(this).get(MyViewModel.class);

        // 點擊'-'按鈕對model的count+1
        binding.btnAdd.setOnClickListener( view -> model.addCount() );
        // 點擊'-'按鈕對model的count-1
        binding.btnSub.setOnClickListener( view -> model.subCount() );
        
        // 當我們的數據發生改變的時候就會呼叫onChanged()函數
        model.getCount().observe(this, integer -> {
            binding.textCount.setText(String.valueOf(integer));
        });
    }
}

上一篇
Day17 - ViewModel | Android Jetpack
下一篇
Day19 - DataBinding | Android Jetpack
系列文
Android 開發 30天 初學之路筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言