androidrecyclerview多布局_RecyclerView仿今日头条实现标签管...

androidrecyclerview多布局_RecyclerView仿今日头条实现标签管...

2023年6月27日发(作者:)

androidrecyclerview多布局_RecyclerView仿今⽇头条实现标签管。。。在我的知识星球【Hi Android】 中,有⼀位星友提问 如何实现这个功能,刚好,这个也算是⼀个不错的知识点,类似于今⽇头条,于是乎,花点时间总结成⼀篇⽂章,供⼤家阅读这个实现⽅式很多,但是我⾸先想到的是使⽤RecyclerView去做,可能还有很多其他的实现⽅式,这⾥我就单指我的思路,来实现这个效果。⼀.TabLayout + ViewPager主页可以⽤TabLayout + ViewPager 去实现,也是⽐较⽅便并且简单的⼀种⽅式,我们必须先引⼊需要的依赖:implementation 't:design:28.0.0'implementation 't:recyclerview-v7:28.0.0'然后去实现我们的布局:这个布局是这样的,通过⼀个相对布局覆盖⼀个添加的图标在TabLayout上⾯,⽽TabLayout作为⼀个标题导航栏的存在,控制着下⽅的ViewPager,⽽ViewPager 需要绑定Fragment,那么问题来了,如何进⾏双向绑定呢? 可以看下如下代码:通过addOnPageChangeListener以及监听addOnTabSelectedListener来实现的双向滑动监听与控制,其中这段代码出现了⼏个不同的类,⽐如TagManager,ContentAdapter我们来看下他们是什么内容?TagManager只是我为了管理静态的列表数据所创建的类,并没有特殊的⽤处,因为是Demo,所以定义⽅⾯都是⽐较随意的ContentAdapter是ViewPager的适配器,可以看到我为每⼀个Item都new了⼀个Fragment并且将标题传⼊,但是在实际项⽬中,可能就不是传标题,⽽是传ID了,我们继续往下看在Fragment中,我将获取的title进⾏了⽹络请求,并将请求结果显⽰出来,这个DataManager就是我为了模拟数据⽽创建的,loadNetworkData模拟⽹络数据请求:这⾥很好理解,延时2s后将标题和当前的时间返回回去的⼀个过程,现在我们运⾏⼀下即可:并且左右滑动上下都是可以联动的,这就是我们想要的⼀个效果了,那么我们接下来就需要解决标签管理id问题了,点击+号按钮直接跳转到标签管理页⾯⼆.RecyclerView因为我们的标签都已经定义好了,所以现在想实现这个页⾯太简单了,⾸先给⼤家看下我通过DataManager模拟的数据这两个⽅法只要在开头调⽤⼀下就好了,我们的数据就有了,布局写起来也相当简单考虑到可能会有很多数据,所以选择了ScrollView,并且这⾥存在两个RecyclerView,你也可以⼀个RecyclerView多Type形式来做,都是没问题的,所以我们来看下这个⽐较简单的适配器吧这个适配器⽐较简单,就没有什么可说的了,我们直接看核⼼代码:这段代码⾸先我们看onCreate中,setDisplayHomeAsUpEnabled是为了显⽰标题栏的返回键,⽽onOptionsItemSelected则是为了响应他的点击事件,⽽两个RecyclerView的创建⽐较简单,使⽤的是GridLayoutManager,真正要注意的是ItemAddDel这个⽅法,当你点击要显⽰的item后,实则删除,并且将删除的item添加在下⽅,这样的⼀个逻辑,最终的效果如图:这⾥我并没有做长按拖拽的功能,因为这是另⼀种写法了,随意我偷个懒了,Gif效果图会在⽂末放上,这⾥我们继续往下讲,添加完之后我们会关闭当前页⾯,这⾥不管是点击左上⾓的返回键还是系统的BACK按钮,我们都setResult来告诉MainActivity我已经回来了该刷新了这⾥的逻辑就⽐较简单了,因为我不确定⽤户在标签管理页⾯到底做了多少增删的操作,所以我直接removeAllTags,然后重新addTab,并且因为数据源的改变,ViewPager也要刷新来看下我们最终的效果吧:但是你会发现,这样做还是会有异常,并且数据不会刷新,这完全在于ViewPager的刷新上,我们需要修改他的适配器来达到我们的⽬的:改动⽐较⼤,我们通过Tag去做标记然后通过FragmentManager去更新,这样就可以来看下我们的最终效果:三.总结这个效果不难吧应该,但是思路需要⾃⼰把握,当然,我这写的不算太好,还可以继续优化,包括可以增加长按拖拽,缓存数据等⽅⾯,速度也可以继续再优化⼀下。关于源码的下载,可以到我的知识星球中本⽂的评论区下载也可以加⼊Android Developer 交流群:417046685 下载

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687840823a49894.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信