MVC、MVP与ListView、RecycleView
2017-06-07 本文已影响0人
岛在深海处
1.设计模式(mvc, mvp)
(1)mvc 将数据模型、界面视图和业务逻辑控制分开的模式
- Model :只准备纯数据,不关心它如何呈现。
问题:Model层与View层到底是如何连接的? 大多数情况Activity既充当View层又充当Controller层,所以用原生控件的时候,Model只会与Activity交互而不会与xml文件交互,但是如果用自定义控件的时候可以把Model层获取的数据(通过controller层)传给View层进行显示(在View层操作从model层获取的数据)---这样的好处在于当要修改UI时不需要去修改Model和Controller。
- View:(xml文件或自定义控件)只管显示数据,不管数据从何而来
- Controller:(Activity)负责控制处理事件
问题:Model的更新是通过观察者模式告知View的?观察者模式?
(2)mvp
主要是activity或者Fragment充当了View层,Presenter层相当于View层和Model层的一个桥梁,将Model层获取的数据传送给View层显示(还是在Presenter层操作model层获取的数据数据)
2.RecycleView
先复习下ListView,使用ViewHolder是为了减少findViewById的次数
ListView扩展
setMultiChoiceModeListene实现ListView多选或单选模式
- (1)创建Adapter继承RecycleView.Adapter<ViewHolder>
- (2)实现两个重要的方法onBindViewHodler()以及onCreateViewHolder() (使用RecyclerView控件我们就可以把Item View视图创建和数据绑定这两步进行分来进行管理,用法就更加方便而且灵活)
- (3)创建一个ViewHolder类,该类必须继承自RecyclerView.ViewHolder类
RecycleView扩展:
RecycleView官方分割线
ListView与RecyclerView的区别
1.ListView是继承BaseAdapter,复用convertView使用ViewHoleder减少findViewById()的次数,而RecyclerView的adpter是继承RecyclerView.adapte<RcyclerView.ViewHolder>
2.RecyclerView可以根据自己的需求去自定义分割线
3.RecyclerView自己实现了局部刷新。
4.RecyclerView提供了动画效果。
5.RcyclerView支持嵌套滑动机制。