Comments (7)
谢谢你的建议!
1.列表加载,首页/第二(..N)页 失败重试这个好像不容易实现
我的理解您是在说 PagingLibrary
的onError下重新请求的机制吧,这个其实我在另外一篇文章(这里)中提到了,通过RxJava的操作符就能轻松实现,和Paging
本身反而关系不大了。
因为之前有一些朋友反馈文章中关于RxJava
的这些操作符有一定的学习成本,因此我并没有直接放在demo中进行展示,实际上Paging
的使用也不是demo中简单封装一下就能完成的,具体还是看实际需求哈。
2.关于
Navigation
的使用
非常感谢您的指导性建议,我会接下来重新研究一下这个库,并在demo中提供更优雅的示例代码! 👍
from mvvm-architecture.
最近对代码进行整理和思考,关于
1.列表加载,首页/第二(..N)页 失败重试这个好像不容易实现
我尝试了用这种方式将Paging的错误相关,作为事件通过 Subject 向ViewModel layer 传递,这种思路目前来看还是有可行性的,欢迎一起讨论哈。
此外,关于 Navigation 的使用优化 和 Room 尚未在代码中进行示例展示,是作为接下来的开发内容,因此暂时 reopen 该 issue ,也希望能对我个人有一些督促的作用(而不是close之后issue就沉掉了)😄
from mvvm-architecture.
1 列表加载,首页/第二(..N)页 失败重试这个好像不容易实现
2 首页其实可以不用viewpager,navigation导航虽然会replace fragment,使用viewmdel完全可以保留数据状态,MainActivity里面BottomNavigationView 搭配NavHostFragment,然后4个子页面viewmodel使用ViewModelProviders.of(requireActivity(), viewModelFactory)创建,在fragment stop的时候记录列表状态
Parcelable listState = binding.recycleview.getLayoutManager().onSaveInstanceState(); viewModel.mBundleRecyclerViewState.putParcelable(KEY_RECYCLER_STATE, listState);
然后
viewModel.pagedList.observe(this, new Observer<PagedList<ItemBean>>() { @Override public void onChanged(@Nullable PagedList<ItemBean> pagedList) { adapter.submitList(pagedList); Parcelable listState = viewModel.mBundleRecyclerViewState.getParcelable(KEY_RECYCLER_STATE); if (listState != null) { binding.listFeed.getLayoutManager().onRestoreInstanceState(listState); } } });
切换效果很好,另外可以在MainActivity里面监听onDestinationChanged,判断是否是首页4个tab,是显示BottomNavigationView ,不是就隐藏
navController.addOnDestinationChangedListener
请教大佬有demo 可以看下实现吗?
from mvvm-architecture.
目前Paging
的使用示例已经在项目中进行了展示;
而Navigation
的使用可能还要等接下来的更新,你可以在这里查看该项目的接下来的开发重点哈。
这两个库的使用教程如下,文中包含了demo的地址:
from mvvm-architecture.
目前
Paging
的使用示例已经在项目中进行了展示;而
Navigation
的使用可能还要等接下来的更新,你可以在这里查看该项目的接下来的开发重点哈。这两个库的使用教程如下,文中包含了demo的地址:
老哥,我主要想问导航搭配viewmodel,实现数据保留, 看那个老哥介绍的思路,不会实现,对viewmodel 不熟悉,在导航监听里根据id隐藏底部导航这个我已经实现了,最近项目都在用这个。
from mvvm-architecture.
issue的发起者的意思是,让Activity控制一个ViewModel
,所有的Fragment都同样持有这个Activity
域的ViewModel
,在Fragment被销毁和重建的时候,将数据存储在ViewModel
中去或者从ViewModel
中取出。
其实就是ViewModel
的Activity和Fragment之间的通讯功能,你可以了解下 😄
from mvvm-architecture.
issue的发起者的意思是,让Activity控制一个
ViewModel
,所有的Fragment都同样持有这个Activity
域的ViewModel
,在Fragment被销毁和重建的时候,将数据存储在ViewModel
中去或者从ViewModel
中取出。其实就是
ViewModel
的Activity和Fragment之间的通讯功能,你可以了解下 😄
多谢大佬解答,等下去了解ViewModel怎么使用。
from mvvm-architecture.
Related Issues (20)
- sharedpref读取问题 HOT 1
- 大佬看下QQ邮件哦
- 无网络情况下请求接口闪退 HOT 5
- 网络请求 HOT 1
- 大佬 buildSrc 依赖配置是怎么实现。求赐教 HOT 1
- 首页列表上下滑动时好卡啊 HOT 2
- 登陆退出 HOT 2
- 可以加入开发行列一起丰富这个框架吗 HOT 2
- master分支代码爆红 HOT 2
- 【关于】作者本人对这个MVVM项目的定位是什么? HOT 2
- 登陆 HOT 2
- 登录返回401,Unauthorized HOT 2
- com.google.protobuf plugin找不到的问题 HOT 1
- 关于状态管理的疑问 HOT 4
- ViewModelScope.launch HOT 1
- SSL peer shut down incorrectly HOT 1
- 关于gradle的插件 versionPlugin HOT 3
- 请教一个问题
- 升级viewmodel到2.3.0 升级lifecycle到2.2.0 ,在LoginViewModel中如果构造函数有参数时,就会提示这个错误,不知道怎么改,是代码要修改还是google版本的bug呢
- 大佬我写的列表库和网络请求完美支持MVVM给我个友链如何 HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mvvm-architecture.