我们需要思考一个问题上拉刷新下拉加载风格各式各样,淘宝和京东的列表刷新样式就肯定不一样,我们怎么样做到版本迭代的时候可以快速的更改样式。有时还需要显示正在加载数据或者无数据,比如筛选的时候有可能会出现没有数据的情况会显示无数据页面,怎么快速做到?当然如果你对系统架构比较了解那就非常简单了,又或者是你对面向对象的六大基本原则比较熟悉也行。

我们在写项目或是搭建架构的时候需要考虑最多的是扩展,而不是先把所有的功能写在一起或是全部写好,或者说代码过度设计本来很简单的东西你非得跟人解释这怎么怎么的,很忌讳。
肯定是希望目前写好的东西,以后如果出现什么问题或者添加新的功能都不需要去修改我们已经写好的代码,而是在原来的基础上利用面向对象的思想去扩展无论你是继承也好还是实现也好都行,就不会出现需求改变的时候我们的代码就改成了别人口中说的改成了……
本着这个原则我们大致的思想就是:
先处理下拉刷新,同时考虑刷新列表的不同风格样式,确保这个项目还是下一个项目都能用
再处理上拉加载更多,只需去继承写好的下拉刷新控件即可
可以适当的增加一些基本功能,如正在加载列表样式或者说是无页面数据样式
封装通用默认的样式,封装好整个项目的通用样式,如果下次需要修改扩展即可
最后思考一下我们这样去写合不合理,给自己的同事用用自己和他们都做一下测评和修改
3.1 下拉刷新
先处理下拉刷新,同时考虑刷新列表的不同风格样式,确保这个项目还是下一个项目都能用。这里我们肯定是继承上一期的可以直接添加头部和底部的WrapRecyclerView,为了确保实现不同的样式,需要一个额外的辅助类:
我们来写一个默认的下拉刷新效果测试一下,这个gif录制软件的效果不是特别给力
3.2 处理上拉加载更多
再处理上拉加载更多,只需去继承写好的下拉刷新控件即可。我们的确可以在原来的这个下拉刷新的控件中去写,但是有几个问题都写到一堆出了问题找谁?别人怎么看代码?如果该需求只要下拉刷新呢?说好的扩展。所以我们新写一个控件继承已经写好的下拉刷新控件每个类负责单独的事情
3.3 增加一些基本通用功能
最后我们在这个基础在增加一些基本的功能,如正在加载数据的页面,或者数据是空的页面,所以决定找一层最合适的方法去改,那就是我们上一期的WrapRecyclerView的基础上去改,因为那是我们Adapter密切联系的一层。
到目前应该所有的这些列表刷新和加载样式都可以实现,具体的一些要求可以自己修改修改。我这里就不在把它使用到具体的项目中了,我自己也用到了自己的项目中,之所以之前没写这一期的博客是因为在使用的过程中出现了一些Bug,所以才等到这个时候。