Android网络编程之一个Android下菜单系统模块的实现(客户端—添单功能(上部))
接下来,我们完成客户端的添单功能。选择添菜弹出一个Dialog,选择菜品,输入数量与备注后,显示在下方的ListView中。
为了方便,我们仍选择在客户端本地建立sqlite菜品表,并为其编写一个ContentProvider
本篇依然先介绍数据库与ContentProvider等准备工作的编写。
在com.moka.provider包中,先定义关于菜品表的元数据:
public interface Menus extends BaseColumns {// 注意,此处AUTHORITY一定要和Manifest.xml中的配置完全相同public static final String AUTHORITY = "com.moka.menuprovider";// 表名public static final String TABLE_NAME = "MenuTbl";// 访问本表所需的URIpublic static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/" + TABLE_NAME);// 字段名public static final String PRICE= "price"; // 价格public static final String TYPE_ID = "typeId"; //类型public static final String NAME= "name"; // 名称public static final String PIC= "pic"; // 图片public static final String REMARK= "remark"; // 备注// 排序操作public static final String SORT_ORDER = "_id ASC";}
View Code
然后在上个功能中已经写好的DBHelper类中的onCreat()与onUpgrade()方法中分别添加如下语句建立新表(注意要先把旧的.db文件删掉,因为onCreat()只在初次有效)
db.execSQL("CREATE TABLE " + Menus.TABLE_NAME + " ("+ Menus._ID + " INTEGER PRIMARY KEY,"+ Menus.PRICE + " INTEGER,"+ Menus.TYPE_ID + " INTEGER,"+ Menus.NAME + " TEXT,"+ Menus.PIC + " TEXT,"+ Menus.REMARK + " TEXT"+ ");");
View Code
db.execSQL("DROP TABLE IF EXISTS " + Menus.TABLE_NAME);
View Code
再写MenuProvider,基本与开桌功能的provider一致,只是把元数据接口换成Menus:
public class MenuProvider extends ContentProvider {private DBHelper helper = null;private static UriMatcher uriMatcher = null;private static final int GET_LIST = 1;private static final int GET_ITEM = 2;static {uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);uriMatcher.addURI(Menus.AUTHORITY, Menus.TABLE_NAME, GET_LIST);uriMatcher.addURI(Menus.AUTHORITY, Menus.TABLE_NAME + "/#", GET_ITEM);}@Overridepublic boolean onCreate() {helper = new DBHelper(getContext());helper.getReadableDatabase();return true;}@Overridepublic String getType(Uri uri) {// 暂时不需要查看类型return null;}@Overridepublic Uri insert(Uri uri, ContentValues values) {SQLiteDatabase db = this.helper.getWritableDatabase() ;long id = 0 ;switch(uriMatcher.match(uri)) {case GET_LIST :// 插入数据操作id = db.insert(Menus.TABLE_NAME, Menus._ID, values);String uriPath = uri.toString() ;String path = uriPath + "/" + id ;return Uri.parse(path) ;case GET_ITEM :return null ; default:throw new UnsupportedOperationException("Not Support Operation :"+ uri);}}@Overridepublic Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder) {// 获得可读数据库SQLiteDatabase db = helper.getReadableDatabase();switch (uriMatcher.match(uri)) {case GET_LIST:return db.query(Menus.TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder);case GET_ITEM:long id = ContentUris.parseId(uri) ;String where = "_id=" + id ;return db.query(Menus.TABLE_NAME, projection, where, selectionArgs, null, null, sortOrder);default:throw new UnsupportedOperationException("Not Support Operation :"+ uri);}}@Overridepublic int update(Uri uri, ContentValues values, String selection,String[] selectionArgs) {// 暂时不需要更新操作return 0;}@Overridepublic int delete(Uri uri, String selection, String[] selectionArgs) {// 暂时不需要删除操作return 0;}}
View Code
注册provider:
<provider android:name="com.moka.provider.MenuProvider" android:authorities="com.moka.menuprovider" />
为了方便操作,先向menutbl表中插入5条数据如下:
OrderAcitvity中的余下操作在下篇讨论
转载于:https://www.cnblogs.com/moka/archive/2013/05/15/3080210.html
Android网络编程之一个Android下菜单系统模块的实现(客户端—添单功能(上部))相关推荐
- android 网络编程面试题,Android面试题整理
Android方面: 3.内存优化(内存泄漏.内存溢出),如何查找内存泄漏,如何优化 内存泄露:是指程序在申请内存后,无法释放本应该被回收的内存.内存泄露的堆积就会导致内存溢出. 内存溢出:是指程序在 ...
- 腾讯T3亲自教你!2021年Android网络编程总结篇,最强技术实现
前言 Android常用知识体系是什么鬼?所谓常用知识体系,就是指对项目中重复使用率较高的功能点进行梳理.注意哦,不是Android知识体系. 古语道:学而不思则罔,思而不学则殆.如果将做项目类比为& ...
- Android网络编程系列 一 Socket抽象层
在<Android网络编程>系列文章中,前面已经将Java的通信底层大致的描述了,在我们了解了TCP/IP通信族架构及其原理,接下来我们就开始来了解基于tcp/ip协议层的Socket抽象 ...
- 【Android 应用开发】Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介
Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...
- 【Android 应用开发】Android 网络编程 API笔记 - java.net 包相关 接口 api
Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...
- 【Android】Android网络编程概述
Android网络编程概述 原文来自:http://blog.csdn.net/kieven2008/article/details/8210737 首先,应该了解的几个问题: 1)Android平台 ...
- Android网络编程(八) 之 HttpURLConnection原理分析
1 使用回顾 我们在前面博文<Android网络编程(四) 之 HttpClient与HttpURLConnection>中已经对HttpURLConnection的使用进行过介绍.今天我 ...
- Kotlin第五章: android网络编程
1. Android网络编程 OkHttp OkHttp是一个高效的HTTP客户端,它的横空出世,让其他的网络请求框架都变得黯然失色. Retrofit Retrofit是一个基于OkHttp的RES ...
- Android 网络编程(二) HTTP协议解析
文章目录 引言 HTTP 简介 什么是HTTP,HTTPS 又是什么? HTTP 协议的特点 HTTP URL 格式 HTTP的报文 请求报文 请求行 请求报头 请求数据 响应保文 状态行 响应报头 ...
- Android网络编程(一)
Android网络编程概述 首先,应该了解的几个问题: 1)Android平台网络相关API接口 a) java.net.*(标准Java接口) java.net.*提供与联网有关的类,包括流.数据包 ...
最新文章
- 家庭扫地机器人竞争升级 带手臂提供移动服务或是未来方向
- java 类对象可以调用静态方法吗
- Petalinux 2017.4安装教程
- python基础教程:filter(),map()函数用法
- boost::gil模块数字扩展中的 resample_pixels() 示例
- Java UnknownHostException –服务器的无效主机名–如何解决?
- 生成名片二维码 python
- 【英语学习】【Level 08】U04 What I love L6 Information overload
- k8s ready 不调度_【零基础学云计算】k8s部署---master节点组件部署(三)
- win10休眠_电脑升级win10后,必做的5项优化,至少提升20%的运行速度
- smart link和聚合链路综合实验
- SQL Server 2008,三年等待物有所值
- python表白代码-python告白代码,只属于程序员的浪漫
- 【SW】利用3D打印机打印 PCB 钢网的方法
- moments音标_moment 是什么意思_moment 的翻译_音标_读音_用法_例句_爱词霸在线词典...
- 非正态独立小样本统计检验方法的选择
- OPA(运放)与MOS管组成的恒流源电路
- 听见丨美国大型连锁创客空间TechShop破产 首汽约车获7亿元B+轮融资 百度和蔚来汽车等领投
- 容器云平台、灰度发布系统、微服务网关的高可用实践
- MATLAB读取文件
热门文章
- springboot+mybatis+druid 多数据源整合
- SqlServer中使用游标进行双重遍历
- DOS命令taskkill
- 每天一道剑指offer-链表中第k个节点
- 创建图表_三种建立Excel图表的方法,谁用谁知道
- 不用空格怎么打两个空格_为什么在寸土寸金的键盘上,空格键却要做这么长,究竟怎么回事?...
- simpledateformat格式_为什么日期格式化时必须有使用y表示年,而不能用Y?
- 动态分配算法_【原创连载】算法素颜(第4篇):空间复杂度你真的懂了吗?
- SQL:postgresql求多个点组成的多边形的geom数据
- 算法_EXCEL中 A表示第一列,B表示第二列...AA表示27列,AB表示28列,问随意一组字母是多少列