框架【库】mvc/mvp/mvvm

JetPack 初体验

2019-03-19  本文已影响50人  霁逸lei

1.听到这个概念就开始搜索相关文章,看了好久总觉得不得劲,后来翻到官网的介绍看的很痛苦(英语渣没办法),看了个大概终于下定决心把官方的todoapp下载下来学习了好久好久,看的略懵,磕磕绊绊看懂了一部分,然后看到郭霖大神的coolweatherjetpack(https://github.com/guolindev/coolweatherjetpack),然后下下来准备膜拜,结果发现是kotlin版的看的半脸懵逼,于是决定对着练习敲个java版的出来。总算是大概看懂了基本玩法
大概说一下官网的一个锅,为了出现这个界面我下来3个androidstudio然而并没有

image.png

后来不经意间看到了这个


image.png

2.闲话不多说直接上
①开始的开始是在界面获取ViewModel

//Activity下
mViewModel = ViewModelProviders.of(this).get(TasksViewModel.class);
//fragment下,此处context需要和activity的一致才能获取到同一各viewModel对象
mViewModel = ViewModelProviders.of(getActivity()).get(TasksViewModel.class);

②然后就是ViewModel中处理获取数据发送数据的逻辑,此处就该介绍下一个主角LiveData,主要通过liveData.setValue()、liveData.postValue()传数据、liveData.observe()的回调方法收到传来的数据显示出来。

//Activity处理数据
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;
    }
    //调用 setValue 方法,Observer 的 onChanged 方法会在调用 serValue 方法的线程回调。而postValue 方法,Observer 的 onChanged 方法将会在主线程回调
    void openTask(String taskId) {
        mOpenTaskEvent.setValue(new Event<>(taskId));
    }

    void save(List<String> list){
        mOpenTaskEvent2.postValue(new Event<List<String>>(list));
    }
}

看懂了这些大概就能上手找项目开敲了,敲完就大概能知道怎么玩了

3.上Demo,请求天气这块有点小问题,不影响jetpack的学习,个人建议直接去看郭大神的kotlin版+java普通版的coolweather,没事敲几行,膜拜大佬...https://github.com/ChenLeizheng/MvvmTest.git

上一篇下一篇

猜你喜欢

热点阅读