主体是 Activity + ViewPager + Fragment, Fragment 的 recyclerview 加载列表.
MainViewModel 中持有 FragmentViewModel 和 MainRepository 实例.(MainRepository 实现数据获取).MainViewModel 中实现了 MainActicity 的LifecycleObserver
接口,可以在 Acticity creat resume 等等时候,做一些数据操作.
整体是 MVVM,直接对 FragmentViewModel 的实例执行xxx.set(items)
设置数据,对应 recyclerview 就能刷新数据(不用考虑线程问题)
整体需要实现的功能,如图
源码地址 > https://github.com/Jasper-1024/MyPrivacy/tree/MVVM_test/app/src/main/java/com/jasperhale/myprivacy/Activity 暂时比较乱,还没整理.
我尝试使用 rxjava 的 BehaviorSubject 来实现这个过程.
在 FragmentViewModel 中新建一个 public 的 BehaviorSubject
MainRepository 获取数据过程包装成一个Observable <ObservableList> applistObservable
在 FragmentViewModel 将设置过程(xxx.set(items)
)包装成一个 Observer<ObservableList> setObserver
在 MainActicity creat/destory 时候 绑定 /解绑 applistObservable.subscribe(behaviorSubject);
在 Fragment creat/destory 时候 绑定 /解绑 behaviorSubject.subscribe(setObserver);
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.