最新要闻
- 领失业金的年轻人,重新思考工作的意义
- 看点:北上高铁出现大规模晚点 官方回应:故障抢修完毕 有序恢复通行
- 环球快讯:马斯克离开OpenAI内幕:大权独揽想法被拒 10亿美元打水漂
- 形同灾难电影!四子王旗沙尘暴红警:天空变橙红色
- 全球时讯:好吃无负担:诺梵55%~100%黑巧巧克力9.9元大促
- 环球微头条丨市建局协办活动 重塑龙城特色风情
- 环球快播:水平接近ChatGPT!昆仑万维国产大语言模型“天工”3.5来了
- 世界热门:《铁甲小宝》高清重制引热议 网友:这次好好看看小姐姐
- 苦等703天后 《生化危机8村庄》Denuvo加密移除:正版玩家终于不卡了
- 售价20多万续航仅160公里 日系车工业垃圾果然凉凉:今年只卖出15辆
- 环球新资讯:1TB手机干到2599元 手机降价原因找到了:闪存市场暴跌
- 欧菲光:公司已预约4月28日披露2022年度报告
- 焦点关注:重磅!亚洲最大推力液体火箭发动机试车台调试完成
- 视焦点讯!堆料最足超大杯!小米13 Ultra确认可变光圈+全焦段四摄
- 全优大七座SUV!全新一代揽月正式上市 18.99万元起售
- 环球最新:2人观影全程用手机录制电影内容 目击者:中途还换了一个手机
广告
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
焦点速读:Android开发_记事本(2)数据库
APP中的数据库
知识点
ListView
https://blog.csdn.net/indeedes/article/details/119530068
开发过程
需求
可以写并保存多个输入的笔记内容
(资料图片)
按照一定顺序显示出来
如果屏幕不够可以下拉
输入的内容可以增删改查
APP核心:ListView
ListView简介
在Android开发中,ListView是一个比较常用的控件。它以列表的形式 展示具体数据内容,并且能够根据数据的长度自适应屏幕显示。
ListView简单用法
根据:
所以要创建一个结构,一个class
需要创建一个数据库来保存笔记,以此来保证之前的内容不被覆盖
先创建一个Note Class
package com.example.note;public class Note { private long id; //数据库中每篇笔记独一无二的标识(自动增长) private String content; //内容 private String time; //时间(创建or编辑) private int tag; //为了分类笔记的标签(娱乐,运动,学习等) //构造函数 没什么用但要有 public Note(){ } //同时必须有一个详细的constractor //因为id需要有自增长的特性,在数据库里面对他进行设置,所以下面不需要初始化 public Note(String content,String time,int tag){ this.content = content; this.time = time; this.tag = tag; } //接下来是他们的getter和setter,规范化 public long getId() {return id;} public String getContent() {return content;} public String getTime() {return time;} public int getTag() {return tag;} public void setId(long id) {this.id = id;} public void setContent(String content) {this.content = content;} public void setTime(String time) {this.time = time;} public void setTag(int tag) {this.tag = tag; } //重写toString的格式,简洁,方便debug @Override public String toString(){ return content +"\n"+time.substring(5,16)+" "+id; }}
接下来需要将它往数据库里面传,还需要另一个Class CRUD(增删改查)
但要先创建数据库
创建一个数据库NoteDatabase
代码:
package com.example.note;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class NoteDatabase extends SQLiteOpenHelper{ //定义全局常量,方便命名、debug时候修改 public static final String TABLE_NAME = "notes"; public static final String CONTENT = "content"; public static final String ID = "_id"; public static final String TIME = "time"; public static final String MODE = "mode"; //写一个constractor //context:上下文 //version:代码更改、升级时改变版本号 public NoteDatabase(Context context) { super(context,"notes",null,1); } @Override public void onCreate(SQLiteDatabase db){ //下面的function是执行SQL语句 db.execSQL("CREATE TABLE "+TABLE_NAME +"(" +ID + " INTEGER PRIMARY KEY AUTOINCREMENT," //实现自增长 +CONTENT +"TEXT NOT NULL," //笔记内容,非空 +TIME + "TEXT NOT NULL," //时间 非空 +MODE + "INTEGER DEFAULT 1)" //标签,默认1 ); } //升级依靠的function //检测已有的版本和新的版本,如果不相等则调用下面的function @Override public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){ /*for(int i = oldVersion;i实现增删改查(CRUD)
package com.example.note;import android.annotation.SuppressLint;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import java.util.ArrayList;import java.util.List;public class CRUD { SQLiteOpenHelper dbHandler; //数据库处理器 SQLiteDatabase db; //数据库 //首先要知道数据库长什么样子 //把数据库中每一列列举出来组成一个数组,方便对其操作 private static final String[] columns = { NoteDatabase.ID, NoteDatabase.CONTENT, NoteDatabase.TIME, NoteDatabase.MODE }; //constractor public CRUD(Context context){ dbHandler = new NoteDatabase(context); //初始化,dbHandler 指向 NoteDatabase,并传入context } public void open(){ db = dbHandler.getWritableDatabase(); //数据库处理器写入模式,往数据库中写文件 } public void close(){ dbHandler.close(); //关闭数据库处理器 } //核心function之一,添加笔记,把note添加到database public Note addNote(Note note){ //add a note object to database ContentValues contentValues = new ContentValues(); //一个专门处理数据的一个类,初始化 contentValues.put(NoteDatabase.CONTENT,note.getContent()); //将参数二获取到的内容放到参数一中 contentValues.put(NoteDatabase.TIME,note.getTime()); contentValues.put(NoteDatabase.MODE,note.getTag()); //插入一个contentValues,返回一个long类型的数据库的id long insertId = db.insert(NoteDatabase.TABLE_NAME,null,contentValues); //将id设置为刚才返回的id note.setId(insertId); //返回note return note; } //核心之二, public Note getNote(long id){ //get a note from database using cursor index //cursor :游标|指针 //query:database的查询语句(固定格式,死记硬背) Cursor cursor = db.query(NoteDatabase.TABLE_NAME,columns,NoteDatabase.ID + "=?", new String[]{String.valueOf(id)},null,null,null,null ); if(cursor != null) //找到了 { cursor.moveToFirst(); //移到最前面 } //创建了一个新note,把之前的覆盖,一个浅复制 Note e = new Note(cursor.getString(1),cursor.getString(2),cursor.getInt(3)); return e; } //方便我们操作的function //获取数据库中所有的notes,返回得到一个List @SuppressLint("Range") public ListgetAllNotes(){ //访问table下的所有数据 Cursor cursor = db.query(NoteDatabase.TABLE_NAME,columns,null,null,null,null,null); List notes = new ArrayList<>(); if(cursor.getCount()>0){ //while:不断地往List里面添加数据 while(cursor.moveToNext()){ Note note = new Note(); note.setId(cursor.getLong(cursor.getColumnIndex(NoteDatabase.ID))); note.setContent(cursor.getString(cursor.getColumnIndex(NoteDatabase.CONTENT))); note.setTime(cursor.getString(cursor.getColumnIndex(NoteDatabase.TIME))); note.setTag(cursor.getInt(cursor.getColumnIndex(NoteDatabase.MODE))); notes.add(note); } } return notes; } //更新和删除 public int updateNote(Note note){ ContentValues values = new ContentValues(); values.put(NoteDatabase.CONTENT,note.getContent()); values.put(NoteDatabase.TIME,note.getTime()); values.put(NoteDatabase.MODE,note.getTag()); return db.update(NoteDatabase.TABLE_NAME,values, NoteDatabase.ID + "=?", new String[]{String.valueOf(note.getId())} ); } public void removeNote(Note note){ db.delete(NoteDatabase.TABLE_NAME,NoteDatabase.ID + "=" +note.getId(),null); }} 关键词:
焦点速读:Android开发_记事本(2)数据库
领失业金的年轻人,重新思考工作的意义
看点:北上高铁出现大规模晚点 官方回应:故障抢修完毕 有序恢复通行
环球快讯:马斯克离开OpenAI内幕:大权独揽想法被拒 10亿美元打水漂
形同灾难电影!四子王旗沙尘暴红警:天空变橙红色
全球时讯:好吃无负担:诺梵55%~100%黑巧巧克力9.9元大促
全球今头条!Windmill 搭建个人任务中心
环球微头条丨市建局协办活动 重塑龙城特色风情
环球快播:水平接近ChatGPT!昆仑万维国产大语言模型“天工”3.5来了
世界热门:《铁甲小宝》高清重制引热议 网友:这次好好看看小姐姐
苦等703天后 《生化危机8村庄》Denuvo加密移除:正版玩家终于不卡了
售价20多万续航仅160公里 日系车工业垃圾果然凉凉:今年只卖出15辆
环球新资讯:1TB手机干到2599元 手机降价原因找到了:闪存市场暴跌
欧菲光:公司已预约4月28日披露2022年度报告
天天最资讯丨借力函数计算 FC,HEROZ 打造专业级 AI 日本将棋服务
Excelize 发布 2.7.1 版本,Go 语言 Excel 文档基础库
环球今头条!WebAssembly 助力云原生:APISIX 如何借助 Wasm 插件实现扩展功能?
世界速看:记录-html-docs-js避坑指南
阿里正式加入ChatGPT战局,“通义千问”上线后表现如何?
全球消息!债市日报:4月10日
焦点关注:重磅!亚洲最大推力液体火箭发动机试车台调试完成
视焦点讯!堆料最足超大杯!小米13 Ultra确认可变光圈+全焦段四摄
全优大七座SUV!全新一代揽月正式上市 18.99万元起售
环球最新:2人观影全程用手机录制电影内容 目击者:中途还换了一个手机
米哈游《崩坏星穹铁道》姬子角色PV:成熟妩媚的大姐姐
今日快讯:“算力中国行”大型调研采访活动启动,将深入各地了解算力应用发展情况
天天日报丨刷题疑惑3
今日观点!TCP三次握手和四次挥手
【环球报资讯】收评:人工智能板块跳水 10只注册制主板新股大涨
播报:ChatGPT消除无聊的工作 诺奖得主:人类上四休三就靠AI
对标特斯拉Model Y 小鹏G6再放送 博主:兴奋起来吧、有电动尾翼
《名侦探柯南:黑铁的鱼影》新宣传图 成人版灰原哀太劲爆
精彩看点:第三次!沈腾主演《满江红》宣布密钥再次延期:上映至5月15日
亚马逊安抚员工:公司并没有在AI竞争中落下
天天微资讯!私募巨头阿波罗:美国信贷紧缩已开始
全球信息:【AIGC】ChatGPT 相关分享
互联网+医疗|如何满足各项安全合规要求
全球新资讯:一代“金牌配角” 中国香港知名演员吴耀汉去世:终年83岁
世界热消息:单核性能猛增68% 龙芯确认下代CPU性能达市场主流水平
【全球速看料】已做到笔记本电脑大小 国产量子计算机再进化:三大产品升级
环球信息:撞脸苹果!金立发布F1 Plus手机:刘海屏设计 国产8核CPU
《生化危机4:重制版》艾达王配音首次发声:亚裔女演员不止是花瓶
今日热文:广东2023年注会考试报名系统
世界即时:低至200元 / 月,火山引擎DataLeap帮你搭建企业级数据中台
天天短讯!奔驰EQG将采用革命性电池技术:续航、充电性能大增
全球看热讯:又是单踏板让车失控?重庆一特斯拉突然加速撞7车:官方确认车没问题驾驶员全责
mp3是什么格式的文件?怎么下载歌曲到MP3上?
怎么增大电脑虚拟内存页面文件大小?电脑虚拟内存页面怎么设置?
荣耀7i上市时间及价格是什么?荣耀7i配置和参数
英雄联盟s24赛季什么时候开始的?英雄联盟s24赛季结束时间
东部战区重磅发布:砺剑亮剑,驱虎打狐
天天短讯!Github使用教程
新资讯:在.NET7中使用MQTTnet简单实现MQTT通信
dnf成就格林赛罗斯战场怎么进?dnf成就格林赛罗斯战场任务怎么做?
焦点速读:击败《冰雪奇缘2》创新世界纪录!《超级马力欧兄弟》5天狂揽26亿票房
每日热文:自动驾驶是忽悠?蔚来李斌:目标是解放时间 减少事故
当前快讯:269元 米家快煮电饭煲4L预售:25分钟即熟
手工扯面+秘制辣油 西安饭庄油泼biangbiang面大促:6.66元/盒
用 Go 剑指 Offer 40. 最小的k个数 (Top K 问题)
快看点丨Web渗透测试流程
重点聚焦!SonarQube(CE)版集群环境下的高可用性实践
当前短讯!Java-泛型机制详解
最新快讯!Go常用库之GoRequests
十五五规划时期,未来十大新兴产业有哪些
世界视点!中兴Axon Pad来了:全球唯一5G双系统平板
医生误判将女孩恒牙当乳牙拔掉 科普:恒牙和乳牙区别
当前关注:日系车在中国真不香了!丰田、本田、日产、马自达全线暴跌
快资讯:iOS 16.4体验大翻车!苹果关闭降级通道:只许升新版
天天即时看!80/90后回忆杀!经典日漫《铁甲小宝》高清修复了:画质提升明显
【环球新要闻】全文索引:Apache Lucene(二)
Selenium做Web自动化踩过的坑
每日聚焦:通俗解释 JVM CAS 机制
世界观点:4月10日11时浙江嘉兴疫情最新消息 4月10日11时浙江嘉兴今日确诊人数
每日快播:米家空调巨省电首销:2匹大风量 2799元
环球热点!小米MIJIA智能音频眼镜发布!独特耳机眼镜二合一设计
世界热推荐:新手爸爸拿狗狗练拍嗝 网友:狗狗从来没享受过这么高的待遇
环球观察:周杰伦就不正当竞争起诉网易!4月17日开庭
日本非现金支付比例仅占36% 远落后于中国农村
重磅来了!
介绍一下sourcemap
今日关注:全网最详细中英文ChatGPT-GPT-4示例文档-文章大纲智能生成器从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js
一季报预览:哪些公司业绩有望超预期
全球快看点丨迪拜拍出世界最贵车牌号:价值超1亿元!
各地开通旅游专列:去淄博吃烧烤都有专列了
环球今亮点!米粉催卢伟冰发小米13 Ultra:我想冲顶配版
丰田在日召回超20万辆汽车:发动机有火灾隐患 已烧了两辆
世界观焦点:整合Microsoft 365服务:Win11文件管理器将迎来大更新
如何部署VSCODE SERVER
Silverlight教程_编程入门自学教程_菜鸟教程-免费教程分享
环球今日讯!围挡后面丨长沙河西首个三甲妇幼医院住院楼封顶!预计2025年建成投用
【天天新要闻】还去吗?泰国清迈发布“居家办公令” PM2.5超标准5倍:游客因空气污染锐减
“数学之王”丘成桐AI人工智能投入不能急功近利:中国很多技术卡脖子 基础科学没做好
元宇宙崩盘 林俊杰疑回应炒虚拟地产亏91%:听说很多人想帮我理财
北方大范围沙尘又来了 今年的沙尘天气为啥显得格外多?
天天观速讯丨通过 lua 进行 nginx redis 访问控制
焦点热议:多项数据向好 交通物流加速“跑起来”
环球要闻:背景太假哥疆域阿力木捡的狗“狼里狼气” 网友出谋划策辨认
【环球新视野】极氪X官宣4月12日上市:全能SUV 零百加速3秒级
焦点热文:我国构建世界首个番茄超泛基因组:能让番茄更好吃、产量多6成
全球播报:男女配合当街开井盖用勺挖地沟油被网友拍下引围观:行为太恶劣 应严惩