eatwhatApp开发实战(五)
上次我们为eatwhat添加了了删除功能和dialog对话框的介绍,今天我们来使用SQLite进行本地数据存储。
首先,我们定义一个SQL辅助类ShopInfoOpenHelper继承SQLiteOpenHelper。
- public class ShopInfoOpenHelper extends SQLiteOpenHelper {
- public ShopInfoOpenHelper(Context context, String name,
- CursorFactory factory, int version,
- DatabaseErrorHandler errorHandler) {
- super(context, name, factory, version, errorHandler);
- // TODO Auto-generated constructor stub
- }
- @Override
- public void onCreate(SQLiteDatabase arg0) {
- // TODO Auto-generated method stub
- }
- @Override
- public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
- // TODO Auto-generated method stub
- }
- }
在构造方法ShopInfoOpenHelper中配置上下文环境、数据库名称、版本号游标工厂默认设置null。
- public ShopInfoOpenHelper(Context context) {
- super(context, "shop_info.db", null, 1);
- }
在OnCreate中创建表shopinfo:主键_id,字段shopName。
- public void onCreate(SQLiteDatabase db) {
- db.execSQL("create table shopinfo(_id integer primary key autoincrement,shopName char(20))");
- }
MainActivity中声明数据库和辅助类。在init()方法中声明createOrOpenDataBase()方法。
- // 数据库创建
- private SQLiteDatabase db;
- // openHelper辅助类
- private ShopInfoOpenHelper mOpenHelper;
该方法体内初始化辅助类openhelper,创建或者打开数据库:
- private void createOrOpenDataBase() {
- mOpenHelper = new ShopInfoOpenHelper(MainActivity.this);
- //如果数据库不存在 则创建可读写的数据库 ,如果创建了 则直接打开
- db = mOpenHelper.getWritableDatabase();
- }
声明方法addLocalData(Shop shop):
- private void addLocalData(Shop shop) {
- //存储的机制,只能存储基本类型的数据,像string、int之类。
- ContentValues values = new ContentValues();
- values.put("shopName",shop.getName());
//shopinfo中插入数据- db.insert("shopinfo", null, values);
- }
在添加按钮的逻辑中调用此方法:
- // List shop添加店名
- Shop shop = new Shop(addName);
- // 添加新实例化的shop对象
- shopList.add(shop);
- // 刷新listview
- shopAdapter.notifyDataSetChanged();
- // 添加到本地数据
- addLocalData(shop);
测试结果,真机测试需ROOT后通过rootexplorer等软件进行查找,路径:data/data/包名/databases/数据库名称/表名
eatwhatApp开发实战(五)的更多相关文章
- [原创].NET 分布式架构开发实战五 Framework改进篇
原文:[原创].NET 分布式架构开发实战五 Framework改进篇 .NET 分布式架构开发实战五 Framework改进篇 前言:本来打算这篇文章来写DAL的重构的,现在计划有点改变.之前的文章 ...
- eatwhatApp开发实战(三)
在实战二中我们在eatwhatApp上增加了“添加店铺的功能”.接下来,我们来将添加的店铺显示出来,这里我们用到控件--ListView. 先上演示图: 首先,我们先设置布局: <Relativ ...
- eatwhatApp开发实战(二)
上期,我们做了个小app“eatwhat”,接下来每期都会为其添加新的功能.本期,我们为店铺增加添加店铺的功能. 还是先设置个布局: <RelativeLayout android:layout ...
- eatwhatApp开发实战(一)
开发背景: 当你想用抛硬币来决定事情的时候,那么硬币抛起的瞬间,你就有答案了.一样的,吃啥?eatwhat点开,按钮一点,你就可以知道你中午要吃啥. 话不多说,项目开发走起 ADT点开,New==&g ...
- eatwhatApp开发实战(十四)
之前我们就输入框EditText做了优化,而这次,我们为app添加拨打电话的功能. 首先是布局,将activity_shop_info.xml中对应的电话那一栏进行重新设计: <Relative ...
- eatwhatApp开发实战(十三)
这次内容,我们就项目中添加商店名称的EditText进行修改,让添加按钮随着edittext的内容而改变. 上代码,首先是xml文件上对两个控件的修改: <RelativeLayout andr ...
- eatwhatApp开发实战(十二)
上次我们介绍了跳转activity并且实现传值的功能,今天我们来实现双击返回键退出app的功能,上代码: 这里我们有两种方式去实现点击事件: 第一种方式: /** * 返回键的监听(系统提供的) */ ...
- eatwhatApp开发实战(十一)
之前我们实现了点击item项跳转activity,接下来我们再其基础上添加参数的传递. 在MainActivity里面的onItemClick()中: String name = shopList.g ...
- eatwhatApp开发实战(十)
android应用中,很少有一个activity的app,这次我们设置一个activity,通过listview的点击跳转并显示对应的商店信息. 首先创建类ShopInfoActivity,对应设置其 ...
随机推荐
- nginx判定国家ip访问网站
我们可以通过GeoIP模块和MaxMind免费数据库来实现.MaxMind具有新版本的数据库GeoLite2,它仅支持CSV和mmdb格式.可以支持mngx_http_geoip2_modulemdb ...
- Java笔记(day14-17)
集合类的由来: 对象用于封装特有数据,对象多了需要存储,如果对象的个数不确定. 就使用集合容器进行存储. 集合特点: 1,用于存储对象的容器. 2,集合的长度是可变的. 3,集合中不可以存储基本数据类 ...
- Spring Cloud feign GET请求无法用实体传参的解决方法
代码如下: @FeignClient(name = "eureka-client", fallbackFactory = FallBack.class, decode404 = t ...
- 【原理探究】女朋友问我ArrayList遍历时删除元素的正确姿势是什么?
简介 我们在项目开发过程中,经常会有需求需要删除ArrayList中的某个元素,而使用不正确的删除方式,就有可能抛出异常.或者在面试中,会遇到面试官询问遍历时如何正常删除元素.所以在本篇文章中,我们会 ...
- PHP根据抖音的分享链接来抓包抖音视频
现在抖音是个很火的短视频平台,上面有许多不错的小视频.今天教大家怎么用PHP技术来获取到抖音上的的内容. 1:打开抖音选中你认为好的视频点击分享,复制链接,然后你会获取到如下的内容: #科比 愿你去的 ...
- activiti工作流入门学习
工作流一般在OA系统用的比较多,当然,只要有流程审批的地方都会用到,activiti只是开源的工作流中比较流行的一个,还有其他的开源的工作流,这里学习activiti工作流:前面部分是关于activi ...
- docker安装之后的配置各种坑
1.docker官网下载安装之后 2.点击 Docker quick start快捷方式 错误提示: windows正在查找bash.exe,也可以手动查找,但是一直找不到. 3.执行 docker- ...
- OpenCV开发笔记(五十六):红胖子8分钟带你深入了解多种图形拟合逼近轮廓(图文并茂+浅显易懂+程序源码)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- 全网最全Docker命令详解
由于最近在学习Docker,在这里把有关Docker的命令做一个集合,方便后面查看: # docker --help Usage: docker [OPTIONS] COMMAND [arg...] ...
- Redux:data flow
我们使用react,是为了构建可复用的高性能的视图层,学习redux是为了处理视图组件中随应用复杂度提升而变得难以控制的state.说白了,是为了视图. 在了解了action.reducer和stor ...