框架模式MVC在安卓中的实践
我们采用ListView来演示我们的MVC模式,目录结构:
实体类:包含了书的名字和图片信息
public class Book { //书名
private String name;
//书的图片
private int image; public Book(String name, int image) {
this.name = name;
this.image = image;
}
模型类(Model层):通常是对本地数据库的操作或者是通过网络请求获取网络数据的操作
我们在Model里面模拟了一个本地数据库,并提供了增删改查的方法
public class BookModel { private static List<Book> list = new ArrayList<>(); /**
* 模拟本地数据库
*/
static {
list.add(new Book("Java从入门到精通", R.drawable.java));
list.add(new Book("Android从入门到精通", R.drawable.android));
list.add(new Book("Java从入门到精通", R.drawable.java));
list.add(new Book("Android从入门到精通", R.drawable.android));
} /**
* 添加书本
* @param name
* @param image
*/
public void addBook(String name, int image) {
list.add(new Book(name, image));
} /**
* 删除书本
*/
public void deleteBook( ) {
list.remove(list.size() - 1);
} /**
* 查询数据库所有书本
* @return
*/
public List<Book> query() {
return list;
} }
控制器(Controller层):根据Model层的方法,加上我们的业务逻辑处理,对外提供方法并暴露接口
看delete这个方法,判断List是否为空(业务逻辑),使用mode.deleteBook()(Model层方法),通过listener.onComplete()(暴露接口)
public class BookController { private BookModel mode; public BookController() {
mode = new BookModel();
} /**
* 添加书本
* @param listener
*/
public void add(onAddBookListener listener) {
mode.addBook("JavaWeb从入门到精通", R.drawable.javaweb);
if (listener != null) {
listener.onComplete();
}
} /**
* 删除书本
* @param listener
*/
public void delete(onDeleteBookListener listener) {
if(mode.query().isEmpty()){
return;
}else{
mode.deleteBook();
}
if (listener != null) {
listener.onComplete();
}
} /**
* 查询所有书本
* @return
*/
public List<Book> query() {
return mode.query();
} /**
* 添加成功的回调接口
*/
public interface onAddBookListener {
void onComplete();
} /**
* 删除成功的回调接口
*/
public interface onDeleteBookListener {
void onComplete();
}
}
视图(View层):我们操作Controller获取List数据填充到ListView中,同时可以添加书本和删除书本
public class BookActivity extends AppCompatActivity implements View.OnClickListener { private BookController bookController; private ListView lv_book;
private List<Book> list;
private BookAdapter adapter;
private Button bt_add, bt_delete; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_book);
lv_book = (ListView) findViewById(R.id.lv);
bt_add = (Button) findViewById(R.id.bt_add);
bt_delete = (Button) findViewById(R.id.bt_delete);
bt_add.setOnClickListener(this);
bt_delete.setOnClickListener(this); bookController = new BookController();
list = bookController.query();
adapter = new BookAdapter(this, list);
lv_book.setAdapter(adapter);
} @Override
public void onClick(View v) {
switch (v.getId()) {
//添加书本按钮
case R.id.bt_add:
bookController.add(new BookController.onAddBookListener() {
@Override
public void onComplete() {
adapter.notifyDataSetChanged();
}
});
break;
//删除书本按钮
case R.id.bt_delete:
bookController.delete(new BookController.onDeleteBookListener() {
@Override
public void onComplete() {
adapter.notifyDataSetChanged();
}
});
break;
}
}
}
效果图
源码
github:https://github.com/AndroidHensen/Design-Mode
https://blog.csdn.net/qq_30379689/article/details/52909656
框架模式MVC在安卓中的实践的更多相关文章
- Android基础——框架模式MVC在安卓中的实践
本篇文章包含以下内容: MVC的介绍 MVC的实践 MVC的介绍 MVC (Model View Controller),是模型(model)视图(view)控制器(controller)的缩写,一种 ...
- [转]框架模式 MVC 在Android中的使用
算来学习Android开发已有2年的历史了,在这2年的学习当中,基本掌握了Android的基础知识.越到后面的学习越感觉困难,一来是自认为android没啥可学的了(自认为的,其实还有很多知识科学), ...
- 框架模式 MVC 在Android中的使用
算来学习Android开发已有2年的历史了,在这2年的学习当中,基本掌握了Android的基础知识.越到后面的学习越感觉困难,一来是自认为android没啥可学的了(自认为的,其实还有很多知识科学), ...
- SSH----MVC框架模式与分层架构
MVC框架模式 MVC框架模式是web开发中一种软件设计典范,他的全名是(Model -View -Controller),是模型(model)--视图(view)--控制器(controller)的 ...
- 简述MVC框架模式以及在你(Android)项目中的应用
标题是阿里电话面试的问题,一直以为自己很清楚MVC模式,结果被问到时,居然没法将MVC和Android中各个组件对应起来,所以,面试肯定挂了,不过面试也是学习的一种方式,可以知道大公司看中什么,以及自 ...
- 安卓中的Model-View-Presenter模式介绍
转载自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0425/2782.html 英文原文:Introduction to M ...
- MVC框架模式技术实例(用到隐藏帧、json、仿Ajax、Dom4j、jstl、el等)
前言: 刚刚学完了MVC,根据自己的感悟和理解写了一个小项目. 完全按照MVC模式,后面有一个MVC的理解示意图. 用MVC模式重新完成了联系人的管理系统: 用户需求: 多用户系统,提供用户注册.登录 ...
- 开发模式 MVC、MVP、MVVM和MVX框架模式
MVX框架模式的了解 MVX框架模式:MVC+MVP+MVVM 1.MVC: Model(模型)+View(视图)+controller(控制器),主要是基于分层的目的,让彼此的职责分开.View通过 ...
- MVC框架模式和Javaweb经典三层架构
一.MVC设计模式 1.MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(Vie ...
随机推荐
- 参考信息 - Serverless
初见 Serverless的本质是什么? 看懂 Serverless,这一篇就够了 关于「Serverless」的完整指南:你知道和不知道的 了解 7个开源平台,入门无服务器计算
- Java线程池(ThreadPoolExecutor)原理分析与使用
在我们的开发中"池"的概念并不罕见,有数据库连接池.线程池.对象池.常量池等等.下面我们主要针对线程池来一步一步揭开线程池的面纱. 使用线程池的好处 1.降低资源消耗 可以重复利用 ...
- 昕有灵犀-xyFS私有文件云存储OSS服务
本工程为本人开发的开源项目,地址: https://gitee.com/475660/xyFS 介绍: 一站式企业私有文件服务.针对软件开发时提供的文件存储系统,对文件上传.下载.分类.分组.审计.统 ...
- SqlServer 更改数据库名称
1.首先选中需要更改数据库右击属性找到文件, 此处可直接修改数据库逻辑名称 2.选中数据库右击选择重命名修改数据库名称. 3.将数据库进行分离,找到数据库文件mdf与ldf文件,直接更改文件名称 4. ...
- Linux学习笔记之一————什么是Linux及其应用领域
1.1认识Linux 1)什么是操作系统 2)现实生活中的操作系统 win7 Mac Android iOS 3) 操作系统的发展史 (1)Unix 1965年之前的时候,电脑并不像现在一样普遍,它 ...
- JVM-常用内存调优参数总结
一.内存调整参数 -Xmx2g 设置堆内存最大值为2g -Xmx512m 设置堆内存最大值为512m -Xms1g 设置堆内存最小值1g (ps:-Xms和-Xmx实际上是 -XX:Ini ...
- dart之旅(一)
前言 最近在看 dart 了,本着 "纸上得来终觉浅,绝知此事 markdown" 的原则,准备边学边写,写一个系列,这是第一篇.学习过程中主要是参考 A Tour of the ...
- 从零开始学 Web 之 DOM(六)为元素绑定与解绑事件
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... +-------------------------------------------------------- ...
- MySQL 一些内部原理
1. MySQL 体系结构 如下图: Mysql是由SQL接口,解析器,优化器,缓存,存储引擎组成的(SQL Interface. Parser. Optimizer.Caches&Buffe ...
- Spring的Java配置方式—@Configuration和@Bean实现Java配置
Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1.@Configuration 和 @BeanSpring的Java配置方式是通过 @Configuration 和 @Be ...