1.聽到這個(gè)概念就開始搜索相關(guān)文章,看了好久總覺得不得勁,后來翻到官網(wǎng)的介紹看的很痛苦(英語渣沒辦法),看了個(gè)大概終于下定決心把官方的todoapp下載下來學(xué)習(xí)了好久好久,看的略懵,磕磕絆絆看懂了一部分,然后看到郭霖大神的coolweatherjetpack(https://github.com/guolindev/coolweatherjetpack),然后下下來準(zhǔn)備膜拜,結(jié)果發(fā)現(xiàn)是kotlin版的看的半臉懵逼,于是決定對(duì)著練習(xí)敲個(gè)java版的出來??偹闶谴蟾趴炊嘶就娣?br> 大概說一下官網(wǎng)的一個(gè)鍋,為了出現(xiàn)這個(gè)界面我下來3個(gè)androidstudio然而并沒有

后來不經(jīng)意間看到了這個(gè)

2.閑話不多說直接上
①開始的開始是在界面獲取ViewModel
//Activity下
mViewModel = ViewModelProviders.of(this).get(TasksViewModel.class);
//fragment下,此處context需要和activity的一致才能獲取到同一各viewModel對(duì)象
mViewModel = ViewModelProviders.of(getActivity()).get(TasksViewModel.class);
②然后就是ViewModel中處理獲取數(shù)據(jù)發(fā)送數(shù)據(jù)的邏輯,此處就該介紹下一個(gè)主角LiveData,主要通過liveData.setValue()、liveData.postValue()傳數(shù)據(jù)、liveData.observe()的回調(diào)方法收到傳來的數(shù)據(jù)顯示出來。
//Activity處理數(shù)據(jù)
mViewModel.getOpenTaskEvent().observe(this, new Observer<Event<String>>() {
@Override
public void onChanged(@Nullable Event<String> stringEvent) {
Toast.makeText(TasksActivity.this, stringEvent.getContentIfNotHandled(), Toast.LENGTH_SHORT).show();
}
});
public class TasksViewModel extends ViewModel {
private final MutableLiveData<Event<String>> mOpenTaskEvent = new MutableLiveData<>();
private final MutableLiveData<Event<List<String>>> mOpenTaskEvent2 = new MutableLiveData<>();
public LiveData<Event<String>> getOpenTaskEvent() {
return mOpenTaskEvent;
}
//調(diào)用 setValue 方法,Observer 的 onChanged 方法會(huì)在調(diào)用 serValue 方法的線程回調(diào)。而postValue 方法,Observer 的 onChanged 方法將會(huì)在主線程回調(diào)
void openTask(String taskId) {
mOpenTaskEvent.setValue(new Event<>(taskId));
}
void save(List<String> list){
mOpenTaskEvent2.postValue(new Event<List<String>>(list));
}
}
看懂了這些大概就能上手找項(xiàng)目開敲了,敲完就大概能知道怎么玩了
3.上Demo,請(qǐng)求天氣這塊有點(diǎn)小問題,不影響jetpack的學(xué)習(xí),個(gè)人建議直接去看郭大神的kotlin版+java普通版的coolweather,沒事敲幾行,膜拜大佬...https://github.com/ChenLeizheng/MvvmTest.git