接下来,我们完成客户端的添单功能。选择添菜弹出一个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下菜单系统模块的实现(客户端—添单功能(上部))相关推荐

  1. android 网络编程面试题,Android面试题整理

    Android方面: 3.内存优化(内存泄漏.内存溢出),如何查找内存泄漏,如何优化 内存泄露:是指程序在申请内存后,无法释放本应该被回收的内存.内存泄露的堆积就会导致内存溢出. 内存溢出:是指程序在 ...

  2. 腾讯T3亲自教你!2021年Android网络编程总结篇,最强技术实现

    前言 Android常用知识体系是什么鬼?所谓常用知识体系,就是指对项目中重复使用率较高的功能点进行梳理.注意哦,不是Android知识体系. 古语道:学而不思则罔,思而不学则殆.如果将做项目类比为& ...

  3. Android网络编程系列 一 Socket抽象层

    在<Android网络编程>系列文章中,前面已经将Java的通信底层大致的描述了,在我们了解了TCP/IP通信族架构及其原理,接下来我们就开始来了解基于tcp/ip协议层的Socket抽象 ...

  4. 【Android 应用开发】Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介

    Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...

  5. 【Android 应用开发】Android 网络编程 API笔记 - java.net 包相关 接口 api

    Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...

  6. 【Android】Android网络编程概述

    Android网络编程概述 原文来自:http://blog.csdn.net/kieven2008/article/details/8210737 首先,应该了解的几个问题: 1)Android平台 ...

  7. Android网络编程(八) 之 HttpURLConnection原理分析

    1 使用回顾 我们在前面博文<Android网络编程(四) 之 HttpClient与HttpURLConnection>中已经对HttpURLConnection的使用进行过介绍.今天我 ...

  8. Kotlin第五章: android网络编程

    1. Android网络编程 OkHttp OkHttp是一个高效的HTTP客户端,它的横空出世,让其他的网络请求框架都变得黯然失色. Retrofit Retrofit是一个基于OkHttp的RES ...

  9. Android 网络编程(二) HTTP协议解析

    文章目录 引言 HTTP 简介 什么是HTTP,HTTPS 又是什么? HTTP 协议的特点 HTTP URL 格式 HTTP的报文 请求报文 请求行 请求报头 请求数据 响应保文 状态行 响应报头 ...

  10. Android网络编程(一)

    Android网络编程概述 首先,应该了解的几个问题: 1)Android平台网络相关API接口 a) java.net.*(标准Java接口) java.net.*提供与联网有关的类,包括流.数据包 ...

最新文章

  1. 家庭扫地机器人竞争升级 带手臂提供移动服务或是未来方向
  2. java 类对象可以调用静态方法吗
  3. Petalinux 2017.4安装教程
  4. python基础教程:filter(),map()函数用法
  5. boost::gil模块数字扩展中的 resample_pixels() 示例
  6. Java UnknownHostException –服务器的无效主机名–如何解决?
  7. 生成名片二维码 python
  8. 【英语学习】【Level 08】U04 What I love L6 Information overload
  9. k8s ready 不调度_【零基础学云计算】k8s部署---master节点组件部署(三)
  10. win10休眠_电脑升级win10后,必做的5项优化,至少提升20%的运行速度
  11. smart link和聚合链路综合实验
  12. SQL Server 2008,三年等待物有所值
  13. python表白代码-python告白代码,只属于程序员的浪漫
  14. 【SW】利用3D打印机打印 PCB 钢网的方法
  15. moments音标_moment  是什么意思_moment  的翻译_音标_读音_用法_例句_爱词霸在线词典...
  16. 非正态独立小样本统计检验方法的选择
  17. OPA(运放)与MOS管组成的恒流源电路
  18. 听见丨美国大型连锁创客空间TechShop破产 首汽约车获7亿元B+轮融资 百度和蔚来汽车等领投
  19. 容器云平台、灰度发布系统、微服务网关的高可用实践
  20. MATLAB读取文件

热门文章

  1. springboot+mybatis+druid 多数据源整合
  2. SqlServer中使用游标进行双重遍历
  3. DOS命令taskkill
  4. 每天一道剑指offer-链表中第k个节点
  5. 创建图表_三种建立Excel图表的方法,谁用谁知道
  6. 不用空格怎么打两个空格_为什么在寸土寸金的键盘上,空格键却要做这么长,究竟怎么回事?...
  7. simpledateformat格式_为什么日期格式化时必须有使用y表示年,而不能用Y?
  8. 动态分配算法_【原创连载】算法素颜(第4篇):空间复杂度你真的懂了吗?
  9. SQL:postgresql求多个点组成的多边形的geom数据
  10. 算法_EXCEL中 A表示第一列,B表示第二列...AA表示27列,AB表示28列,问随意一组字母是多少列