框架模式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 ...
随机推荐
- Django--Ajax 提交
一 什么是Ajax AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传 ...
- git同步github代码
yum install -y git 在linux下搭建git环境1.注册Github账号,网站:https://github.com2.Linux创建SSH密钥:git config --hel ...
- python 打包exe
下载及安装:pip install pyinstaller 执行命令: pyinstaller -F xxx.py pyinstaller --onefile meng.py 可以运行的exe文件位于 ...
- sql server 备份与恢复系列七 页面还原
一.概述 当数据库发生损坏,数据库的每个文件都能打开,只是其中的一些页面坏了,这种情况可以借助DBCC CHECKDB进行数据库检查修复.如果要保证数据库不丢失,或修复不好,管理员只能做数据库完整恢复 ...
- Linux_CentOS-服务器搭建 <三> 补充
今天 才发现,服务器上 JDK 都没有好好的安装下.在这里补充说下. 1.看看机子上JDK的安装了多少 $ rpm -qa |grep java 会出现类似: java-1.6.0-openjdk-1 ...
- CSS 基础:CSS 工作原理(2)<思维导图>
这段时间利用一下间隙时间学习了CSS的基础知识,主要目的是加深对CSS的理解,虽然个人主要工作基本都是后台开发,但是个人觉得系统学习一下CSS的基础还是很有必要的.下面我学习CSS时做的思维导图(全屏 ...
- Maven的assembly插件实现自定义打包部署(包含依赖jar包)
微服务必备 优点: 1.可以直接导入依赖jar包 2.可以添加插件启动 .sh 文件 3.插件的配置以及微服务的统一打包方式 1.首先我们需要在pom.xml中配置maven的assembly插件 & ...
- ClickHouse之初步认识
最近在Percona的blog上看到一篇文章:Column Store Database Benchmarks: MariaDB ColumnStore vs. Clickhouse vs. Apac ...
- web模拟终端博客系统
本文由QQ音乐前端团队发表 前段时间做了一个非常有意思的模拟终端的展示页:http://ursb.me/terminal/(没有做移动端适配,请在PC端访问),这个页面非常有意思,它可以作为个人博客系 ...
- EntityFramework附加实体
//0.0创建修改的 实体对象 Models.BlogArticle model = new BlogArticle(); model.AId = 12; model.ATitle = "新 ...