为什么做这个APP

终于做完这个APP了,大概花了我20天,这个APP的功能的确很简单,我也不知道为什么会花这么久,之所以想着做这个APP,是因为我想将这三个RxJavaRetrofitMVVM模式放在一起使用。

为什么使用这三者

关于这个问题,我先回答我特别喜欢RxJava和MVVM,先说RxJava,这个其实主要是为了解决异步问题,特别是对handler厌烦的人而言,RxJava的出现实在是太及时了,RxJava不算一种框架,它不能拿来就使用,但是它特别好,因为它所实现的大概就是,你输入一个东西,然后输出你想要的东西,这么说可能很宽泛,举个例子,比如在这个项目中,你的输入是通过Retrofit得到的数据,而这个数据是一个类,但是你只想要其中的url,怎么办?RxJava就可以,你只需要使用map操作符就可以(当然在这个项目中我没有这么写,因为我不只是想得到url),而使用Retrofit就是因为它对RxJava进行了很好的支持,当然,它本身也很方便。然后就是MVVM了,这个框架也出现一阵子了,对于使用这个框架,就不得不介绍Data Binding Library这个库了,这个库和mvvm一起使用,简直爽的不行,Data Binding Library这个库能让你在xml中进行数据绑定,在没有使用这个库之前,每次我们写xml都只是为了加载一个布局,除了这个功能,xml几乎没有别的作用,这样就让代码变得复杂、繁琐。那么如何使用这个库呢?我的建议是去官网,当然至于如何翻墙,我就不说了,毕竟僧多肉少(#阴险),如果不会翻墙或者不想看英文的同学,这里我推荐去看简书

从这个APP能学到什么

关于这个,我只能说我也是刚接触这三者没多久,由于专家效应,所以我觉得我写可能更适合初学者去看看,看一下刚接触这个应该怎么写,然后自己再试着改进,而不是直接去看别人写好的,毕竟,纸上得来终觉浅,觉知此事要躬行,这样就能学到更多的东西。其实大家主要就是要看RecyclerViewDataBindingAdapter这个Adapter和那几个Fragment,以及对应的xml文件,特别是RecyclerViewDataBindingAdapter

做完这款APP的反思

关于这个问题,首先从布局上来考虑,由于我一开始不知道自己想做曾什么样子,只知道大概什么样子,然后想着边做边改,但是写着写着,我就后悔了,因为到最后发现有很多界面的布局类似,而我没有将这些布局整合成一个,而是写了好几个,而改的话又要重新制定,因为对于mvvm模式,使用include标签会比较困难,因为是将数据绑定直接绑定在xml中,而要使用include标签就会比较困难了。所以在做一个APP之前应该先想好这个APP具体该做成什么样子,而不能边做边看,想着能将一些好看的view加进去。然后就是对于使用mvvm的反思,由于这个APP有显示网络图片的功能,而一开始我看mvvm没有看那么仔细,结果导致我不知道如何使用Data Binding Library达到通过一个url给image设置图片,然后我就新建了一个Adapter,然后写完之后,我又看着很不爽,我就想着能把这两个整合到一起,于是我又回去重新看一遍Data Binding Library,结果发现自定义一个setter可以达到这个效果,于是我就将两者整合到一起,顺便将这个Adapter封装成自己的一个小框架,以后使用RecyclerViewData Binding Library可以直接拿这个Adapter了(窃喜),所以,我们应该在做一个项目前,将项目所需要的主要的技术都认真看一遍,而不能想着边做项目边学,因为如果这样,由于你的项目不单单是使用一个技术,所以在使用的时候,可能会因为整个项目太大,而不适合去在这个项目中练习如何使用这个框架,如果你重新建一个项目专门去练习使用这个框架(假设你那时还有另开一个专门练习这个框架的项目的心情,因为那时你往往只会想着去解决这个问题,而不会另开一个项目,而由于你是在一个项目中使用这个框架,而你对这个框架又不熟悉,那么你碰到的问题,可能就不只是单单这个框架的问题,还有可能跟框架结合这个项目有关系,那时候你可能在网上找不到答案),由于你还做着这个项目,你就不会有那份认真的去练习这个框架,那样需要的时间可能就会很久,而且,你对这些框架不熟悉,当你整合到一起的时候,可能会出现各种bug,而那个时候你往往没有那份认真调试的心情,因为你对这些都不熟悉,然后就会比较虚,不知道如何下手。最后一个反思就是,一定要学会科学的、理性的进行调试,遇到问题google以及stackoverflow