android课程项目总结:MVC模式(以ListView为实例讲解)


由于之前项目就是用的MVC模式,所以主要总结下之前项目是如何运用MVC模式。

MVC模式

1 角色说明

首先盗一张图,来自链接
在这里插入图片描述
应对于我做的课程项目来说,是按照下表来分层的。

Model层 View层 Controller层
ExampleModel、ExampleDataSource、ExampleDataList xml文件、自定义View(.java文件) ExampleActivity、ExampleAdapter

1.1 Model层

Model层主要负责处理数据的加载或存储。

ExampleModel ExampleDataSource ExampleDataList
Model类是用来给数据存储的类(javaBean) ExampleDataSource类是存储从后台获取数据的类,继承自DataSource类。其作用是将网络请求的具体操作封装在其中,在Activity中只需调用该类实例的loadData函数,以及为其创建一个接口实例(重写其中两个回调函数)即可完成网络请求和数据的获取。 ExampleDataList类是存储数据的List型类,继承自DataListl类,List中数据类型为Model类,该类的作用是当后台返回的json对象data字段只包含一个数组,此时使用ExampleDataList来作为解析json对象的类。

1.2 View层

视图层负责界面数据的展示,与用户进行交互。

xml文件 自定义View
Activity的xml文件、listview等等的子item的xml文件 自定义控件,例如XListView等

1.3 Controller层

控制器层,负责逻辑业务的处理。

ExampleActivity ExampleAdapter
1.初始化标题栏,2.初始化控件(initView),3.创建ExampleDataSource实例,并实现接口(OnDataSourceFinishListener)实现后台数据的读取,4.上传数据至后台,5.从后台获取数据 (一般是listView的Adapter,继承自BaseAdapter)需要重写以下四个函数以及写一个类 :1. getCount():获取其中存储数据的list的长度;2.getItem(int position):获取当前位置的子项;3.getItemId(int position):获取当前位置的子项的id;4.getView(int position,View convertView,ViewGroup parent):在每一个子项被滚动到屏幕内会被调用,并返回一个View对象;ViewHolder类:一个内部类,用于对控件的实例进行缓存

2.模式说明

继续盗一张图。
在这里插入图片描述

2.1 举例说明:

1.紫色,UI变化操作:ListView为一系列课程时,当我们点击任一一门课时,就会跳转到另一个Activity,去具体展示这一门课。
2.蓝色:ListView为一系列课程,用户具有删除课程的权限,当用户点击删除按钮,会触发Adapter中对应按钮的点击事件(Controller处理),在点击事件中会删除数据list中的这一项(修改了model)
3.蓝色:用户下拉刷新listview,此时会回调listview的下拉刷新函数(Controller),下拉刷新函数会调用DataSource的OnReloadData函数,(Controller),该函数完成对后台数据的拉取,并更新Model;红色:Model更改,需要更新listView,于是通知adapter更新数据(Controller),调用OnDataSetChanged之后,会使listView重新进入getView(),然后一条一条滚动到屏幕上(View)。
4.黑色,直接更改让我有点疑惑。有点不理解listView下拉刷新,到底算是直接更新了Model还是经过了Controller,理论上应该是会经过Controller的,不过也可以理解为直接更新了Model数据。

2.2 ListView MVC流程图

这里使用的是xListView(具有上拉加载与下拉刷新),这里的场景是一个Activity,其中包含一个listview。流程分为两种,Activity创建(OnCreate)/,这时会从后台获取数据,并存储在model中,这个model作为adapter中的数据。通知adapter数据更新,之后会调用getView方法,一个子项一个子项的去显示出来。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值