Giter Site home page Giter Site logo

一点小问题 about mvvm-architecture HOT 7 CLOSED

qingmei2 avatar qingmei2 commented on May 1, 2024
一点小问题

from mvvm-architecture.

Comments (7)

qingmei2 avatar qingmei2 commented on May 1, 2024

@sunlimiter

谢谢你的建议!

1.列表加载,首页/第二(..N)页 失败重试这个好像不容易实现

我的理解您是在说 PagingLibrary的onError下重新请求的机制吧,这个其实我在另外一篇文章(这里)中提到了,通过RxJava的操作符就能轻松实现,和Paging本身反而关系不大了。

因为之前有一些朋友反馈文章中关于RxJava的这些操作符有一定的学习成本,因此我并没有直接放在demo中进行展示,实际上Paging的使用也不是demo中简单封装一下就能完成的,具体还是看实际需求哈。

2.关于Navigation的使用

非常感谢您的指导性建议,我会接下来重新研究一下这个库,并在demo中提供更优雅的示例代码! 👍

from mvvm-architecture.

qingmei2 avatar qingmei2 commented on May 1, 2024

@sunlimiter

最近对代码进行整理和思考,关于

1.列表加载,首页/第二(..N)页 失败重试这个好像不容易实现

我尝试了用这种方式将Paging的错误相关,作为事件通过 Subject 向ViewModel layer 传递,这种思路目前来看还是有可行性的,欢迎一起讨论哈。


此外,关于 Navigation 的使用优化 和 Room 尚未在代码中进行示例展示,是作为接下来的开发内容,因此暂时 reopen 该 issue ,也希望能对我个人有一些督促的作用(而不是close之后issue就沉掉了)😄

from mvvm-architecture.

bannerkun avatar bannerkun commented on May 1, 2024

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.

qingmei2 avatar qingmei2 commented on May 1, 2024

@bannerkun

目前Paging的使用示例已经在项目中进行了展示;

Navigation的使用可能还要等接下来的更新,你可以在这里查看该项目的接下来的开发重点哈。

这两个库的使用教程如下,文中包含了demo的地址:

from mvvm-architecture.

bannerkun avatar bannerkun commented on May 1, 2024

@bannerkun

目前Paging的使用示例已经在项目中进行了展示;

Navigation的使用可能还要等接下来的更新,你可以在这里查看该项目的接下来的开发重点哈。

这两个库的使用教程如下,文中包含了demo的地址:

老哥,我主要想问导航搭配viewmodel,实现数据保留, 看那个老哥介绍的思路,不会实现,对viewmodel 不熟悉,在导航监听里根据id隐藏底部导航这个我已经实现了,最近项目都在用这个。

from mvvm-architecture.

qingmei2 avatar qingmei2 commented on May 1, 2024

@bannerkun

issue的发起者的意思是,让Activity控制一个ViewModel,所有的Fragment都同样持有这个Activity域的ViewModel,在Fragment被销毁和重建的时候,将数据存储在ViewModel中去或者从ViewModel中取出。

其实就是ViewModel的Activity和Fragment之间的通讯功能,你可以了解下 😄

from mvvm-architecture.

bannerkun avatar bannerkun commented on May 1, 2024

@bannerkun

issue的发起者的意思是,让Activity控制一个ViewModel,所有的Fragment都同样持有这个Activity域的ViewModel,在Fragment被销毁和重建的时候,将数据存储在ViewModel中去或者从ViewModel中取出。

其实就是ViewModel的Activity和Fragment之间的通讯功能,你可以了解下 😄

多谢大佬解答,等下去了解ViewModel怎么使用。

from mvvm-architecture.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.