首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android记事本项目开发

写了一个Android记事本小程序,现在记录一下。 考虑到是记事本小程序,记录内容只有文字,而且内容不会太长,所以选择使用SQLite数据库数据存放在用户手机上。...新建了一个 NewAsyncTask 类去继承 AsyncTask,去执行数据库读取数据操作,在onPostExecute()方法,去更新UI,比如显示ListView数据,一下页面底部中间有几条数据等...因为没有区别 – – 接下来是查看或修改一条记事本Activity了,之前,是点击一条记事本,则进入这条记事本,把这条记事本直接显示在页面上,用户直接在内容最后进行编辑。...最后自己查看源码,查API,看到参数AdapterView是个泛型,试着它着手,把它强转成Note对象,然后试试获取id,没想到就成了。...– – 所以,获取了当前点击itemNote对象id,把它放在Intent,带着这个参数去开启活动。

2.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

Android 应用开发】Android 数据存储 之 SQLite数据库详解

SimpleCursorAdapter适配器 :  参数解析 :  -- 参数① context : 上下文对象; -- 参数② resource : ListView条目的布局; -- 参数③ cursor : 数据库查询出来记录...类方法介绍 (1) 读写打开数据库 以读写方式打开数据库 :先以读写方式打开数据库, 如果磁盘满了, 就会打开失败,然后会尝试以只读方式打开数据库; public SQLiteDatabase...数据转为 ArrayList> 类型数据 :  -- 遍历条件 : CursormoveToNext()方法, 如果成功移到下一个记录, 就执行循环内容;...-- 获取数据 : CursorgetString(1) 就是获取 这一样记录 第二列数据, 第一列是 "_id" 主键; private ArrayList<Map<String, String...EditText组件获取新闻标题 和 新闻内容 * 2. 获取数据库并从将 新闻标题 和 内容 插入到数据库 * 3. 重新查询数据库 获得Cursor对象 * 4.

2.4K10

如何基于 ZEGO SDK 实现 Android 一对一音视频聊天应用

非首次创建:在“项目”栏目中,单击右上角“创建项目”。...接下来内容,将给大家分享音视频常用功能,如Token 鉴权,创建房间,一对一视频通话等; 6 实现流程 用户通过 ZEGO Express SDK 进行视频通话基本流程为: 用户 A、B 加入房间...为了方便开发阶段调试,开发者可直接在 ZEGO 控制台获取临时 Token(有效期为 24 小时)来使用,详情请参考 【控制台(新版) - 项目管理】 “项目信息”。...在同一房间其他用户将音视频流推送到 ZEGO 音视频云时,我们会在 onRoomStreamUpdate 回调收到音视频流新增通知,并可以通过 ZegoStream 获取到某条流 “streamID...,等比缩放填充整个 View // 如下 playView 为 UI 界面上 View.这里为了使示例代码更加简洁,我们只拉取新增音视频流列表一条流,在实际业务

1.2K30

Android仿抖音右滑清屏左滑列表功能实现代码

概述 ​ 项目中要实现仿抖音直播间滑动清屏,侧滑列表功能,在此记录下实现过程和踩坑记录希望避免大家走些弯路,也当作自己一个总结 ​ 首先看下Demo效果 ? ​...以上就是功能在实现过程要解决问题,下面详细展开 1. 布局结构 ​ 布局结构始终是界面设计时首先要考虑一个问题,接到一个需求开始,首先要根据项目中现有的布局结构,考虑如何更优雅嵌入布局层次。...这样就造成,用户右侧列表点击切换房间后,再次滑出RightSlider切换房间,发现又要从头开始往下滑,这样肯定不符合用户体验。...但是实现过程还是出现了问题,由于RecyclerView预加载功能,导致我们项目中,第一个房间上滑到下一个房间,过程中会新建两个Holder,这样Fragment替换就出了问题,切换房间后Fragment...,这里用rawX 相对屏幕绝对位置,不然随手势移动过程父布局移动,导致获取坐标左右抖动,会出现移动过程左右一直抖动现象 val x = event.rawX.toInt() val

2.4K21

Android实现简单答题系统

by lenovo on 2017/12/4. */ //保存数据库读取记录 public class Question { public String question; public...文件夹下创建assests文件夹(此文件夹下内容在应用被打包成apk时不会被压缩)(存放试题数据库) 在数据库启动时,将该数据库文件复制到数据库目录下 package com.example.lenovo.exam...; import java.util.List; /** * Created by lenovo on 2017/12/4. */ //连接数据库,并从数据库获取所需数据 public...com.example.lenovo.exam/databases/question.db" + "",null,SQLiteDatabase.OPEN_READWRITE); } //获取数据库问题...cursor.getCount() 0){ cursor.moveToFirst();//将cursor移动到第一个光标上 int count=cursor.getCount(); //将cursor一条记录生成一个

2.5K21

android实现在ImageView上随意画线涂鸦方法

实现思路: 1.继承ImageView类 2.重写onTouchEvent方法,在ACTION_MOVE(即移动时),记录下所经过点坐标,在ACTION_UP时(即手指离开时,这时一条线已经画完)...,将所画线(点集合)保存在一个集合 3.重写onDraw方法,利用canvas和所记录线和点画出线来 可能十分笼统,下面来看看实际代码吧 //代表ImageView上一点 public...= new ArrayList<ViewPoint (); } 如上所示,ViewPoint表示一点,而Line表示一条线 然后在扩展ImageView类上声明如下: public class HandWritingImageView...+ 1).y; canvas.drawLine(x, y, nextX, nextY, paint); } } 这样就可以在ImageView上随意涂鸦了,并且还可以通过删除lines最后条...以上这篇android实现在ImageView上随意画线涂鸦方法就是小编分享给大家全部内容了,希望能给大家一个参考。

1.5K10

Android开发基础系列】数据持久化专题

最后当我们完成了对数据库操作后,记得调用SQLiteDatabaseclose()方法释放数据库连接,否则容易出现SQLiteException。         ...DBHelper并获取一个SQLiteDatabase对象,作为整个应用数据库实例;在添加多个Person信息时,我们采用了事务处理,确保数据完整性;最后我们提供了一个closeDB方法,释放数据库资源...如果是,则直接返回该实例,否则试图获取一个可读写模式数据库实例,如果遇到磁盘空间已满等情况获取失败的话,再以只读模式打开数据库获取数据库实例并返回,然后为mDatabase赋值为最新打开数据库实例...,比较版本,根据版本号来调用相应方法,为数据库设置新版本号,最后释放旧不为空mDatabase并解锁,把新打开数据库实例赋予mDatabase,并返回最新实例。...获取数据

29220

带你解锁蓝牙skill(三)

驱动往应用层方向,蓝牙相关代码位置如下 第一部分,系统应用设置Settings蓝牙相关,显示设置进入蓝牙一些界面,代码位置为:packages/apps/Settings/src/com/...,但每个协议仅支持一个连接 在设备进行配对时,发送设备配对状态发生改变广播,在监听到广播后设备会去获取到remote设备所支持协议,并尝试进行连接,比如如果remote设备支持手机音频或者媒体音频,...那么本机设备就会尝试该协议连接。...在介绍provider处理之前,先总结下开始分享到交给provider流程。 ?...暂且留个悬念吧 第274行代码:将要分享文件插入插入数据库 第281行代码:用于触发该provider所注册observer。

1.5K70

【技术创作101训练营】认识Mysql死锁,并给它说再见

今天呢,给大家分享主题是如何分析和解决我们开发过程遇到数据库死锁问题。 故事是发生在看似平常一天,座位对面的产品小姐姐看起来心情很好。突然!...开启锁监控 首先,为了方便定位生产环境数据库异常,我们应该开启监控。只有这样,在发生线上环境死锁问题时,我们才能第一时间获取数据库相关死锁日志。那如何开启这个日志呢?...: 死锁发生时间 导致死锁事务信息(注意:只显示两个事务,如果由多个事务导致死锁也只显示两个) 显示每个事务正在执行 SQL 语句、等待锁以及持有的锁信息等。...这里显示正在等待锁 SQL 语句,死锁日志里每个事务都只显示一条 SQL 语句,这对我们分析死锁很不方便,我们必须要结合应用程序去具体分析这个 SQL 之前还执行了哪些其他 SQL 语句,或者根据...,一般开发人员写代码时都不知道会生成什么样 SQL 语句,也是 DBA 那里拿到了 binlog,然后里面找到了事务执行所有 SQL 语句,发现其中竟然有一行无效 UPDATE 语句,最后追本溯源

60210

解决死锁之路(终结篇)- 再见死锁

,以及导致死锁事务信息(只显示两个事务,如果由多个事务导致死锁也只显示两个),并显示出每个事务正在执行 SQL 语句、等待锁以及持有的锁信息等。...,以及数据库 IP 地址和数据库名,对我们分析死锁用处不大。...这里显示正在等待锁 SQL 语句,死锁日志里每个事务都只显示一条 SQL 语句,这对我们分析死锁很不方便,我们必须要结合应用程序去具体分析这个 SQL 之前还执行了哪些其他 SQL 语句,或者根据...,一般开发人员写代码时都不知道会生成什么样 SQL 语句,也是 DBA 那里拿到了 binlog,然后里面找到了事务执行所有 SQL 语句,发现其中竟然有一行无效 UPDATE 语句,最后追本溯源...要知道在范围查询时,加锁是一条记录一条记录挨个加锁,所以虽然只有一条 SQL 语句,如果两条 SQL 语句加锁顺序不一样,也会导致死锁。

2.4K71

解决死锁之路(终结篇)- 再见死锁

,以及导致死锁事务信息(只显示两个事务,如果由多个事务导致死锁也只显示两个),并显示出每个事务正在执行 SQL 语句、等待锁以及持有的锁信息等。...,以及数据库 IP 地址和数据库名,对我们分析死锁用处不大。...这里显示正在等待锁 SQL 语句,死锁日志里每个事务都只显示一条 SQL 语句,这对我们分析死锁很不方便,我们必须要结合应用程序去具体分析这个 SQL 之前还执行了哪些其他 SQL 语句,或者根据...将这些死锁按事务执行语句和正在等待或已持有的锁进行分类汇总(目前已经收集了十余种死锁场景): 表语句虽然只列出了 delete 和 insert,但实际上绝大多数 delete 语句和 update...,一般开发人员写代码时都不知道会生成什么样 SQL 语句,也是 DBA 那里拿到了 binlog,然后里面找到了事务执行所有 SQL 语句,发现其中竟然有一行无效 UPDATE 语句,最后追本溯源

9.5K116

手机卫士黑名单功能(列表展示)

先把要拦截电话号码保存到数据库,拦截模式用个字段区分,1 电话拦截,2 短信拦截,3全部拦截 新建Activity类CallSmsSafeActivity.java 新建布局文件activity_call_sms_safe.xml...列表展示所有的黑名单手机号码 在布局文件添加控件,定义一个id 获取ListView对象 调用ListView对象setAdapter()方法,参数:ListAdapter对象...查询全部数据 调用helper对象getReadableDatabase()方法,获取到SQLiteDatabase对象 调用SQLiteDatabase对象rawQuery()方法,获取到Cursor...定义方法add(),插入一条记录,参数:String电话号码,Stringmode模式 调用helper对象getWritableDatabase()方法,获取到SQLiteDatabase对象...调用SQLiteDatabase对象insert()方法,插入一条记录,参数:String表名,允许为null列,ContentValues对象 获取ContentValues对象,new出来 调用

62530

Android自定义View实现搜索框(SearchView)功能

概述 在Android开发,当系统数据项比较多时,常常会在app添加搜索功能,方便用户能快速获得需要数据。...可以参考这里(鸿神博客Again)学习一下通用适配器打造,在源码里面也有对应源码。...*/ private void initData() { //数据库获取数据 getDbData(); //初始化热搜版数据 getHintData(); //初始化自动补全数据 getAutoCompleteData...考虑到实际开发数据量十分庞大,可以只把结果集一部分(如前10个)显示出来,上拉到底时候再加载之后记录,也就是可以加入上拉加载机制,使app性能更优化。 自动补全匹配也是采用相同算法。...这里有一个问题是进入该搜索界面时需要加载所有的数据项到内存,当数据项很多时,是否会占用大量内存?如果是应该如何避免?是采用只加载一部分数据形式,还是直接使用搜索词到数据库查询更优?

4.4K10

笨办法学 Java(四)

所以当我把0放入 max 时,意思是“在代码这一点上,就所知,最高分学生 在槽0。”这可能不是真的,但由于我们还没有查看数据库任何值,这是一个很好起点。...任何月份字段为11(11 月)记录都会被添加到一个运行总数,我们也在此过程中计算匹配记录总数。 然后,当循环结束时,我们可以通过将总和除以计数来获得数据库中所有 11 月份每日温度平均值。...尝试更改索引以数组中提取不同值,并查看它如何改变打印出来内容。 练习 57:一副扑克牌 在这本书结束之前,需要向你展示如何使用记录数组来模拟一副扑克牌。...当然,即使这几乎是最后一个练习,也忍不住加入了一些新东西。你想学点新东西,不是吗? 首先,记录偷偷加了一个函数。(实际上,因为这个函数在一个类,它不是一个函数,而是一个“方法”。)...第 103 行创建了一个名为line字符串,用它来做一些不同事情。 第 106 行文件读取房间号。房间号是房间记录第一部分。

9210

Android数据库连接池

sqliteconnectionpool.png 最近在看数据库相关三方库时候,发现在Android应用开发时候是可以并行操作数据库读写,但Android默认数据连接池中只有一个数据库链接。...这里有人可能产生疑问,在进行Android应用开发时候是可以并行操作数据库读写,一个数据库连接能实现并发么?要是一个数据库链接可以实现并发,那么为什么需要数据库连接池?...所以在Android默认数据库连接池只有一个数据库链接时候,所有在这个数据库操作都是串行。我们平时在多线程数据库操作都是串行。...数据库链接使用 在这之前我们先回想 Connection 和 Session 概念: 连接(Connection):连接是客户端到ORACLE实例一条物理路径。...SQLiteConnection connection; //尝试获取队列下一个连接。

3.1K30

真实线上问题之数据库死锁如何解决?

数据库死锁是指在多个并发事务,彼此之间发生相互等待情况,导致所有事务都无法继续执行情形。...关于死锁概念之前有提到过,可参考文章:对线面试官 - MySQL 隔离级别 、锁机制数据库死锁通常由以下原因导致:资源竞争:多个事务试图同时访问相同资源,如数据库表、行、页或锁,但它们请求资源顺序不同...MySQL 只操作同一条记录,也会发生死锁吗?答案是肯定会。因为数据库锁机制针对是索引而非记录本身。...在事务,当我们更新一条记录时,如果使用普通索引作为条件,数据库会先获取普通索引锁,然后尝试获取主键索引锁。...感兴趣小伙伴可以点赞收藏,下期出。好了,本章节到此告一段落。希望对你有所帮助,祝学习顺利。正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

10110

不懂或不知MySQL游标,你可以进来看看

游标(cursor)是一个存储在MySQL服务器上数据库查询, 它不是一条SELECT语句,而是被该语句检索出来结果集。在存储了游 标之后,应用程序可以根据需要滚动或浏览其中数据。...注意:MySQL游标可以用于 存储过程,函数,触发器,事件 2.游标特性 数据库也可以选择不复制结果集 不可更新 游标只能向一个方向行进,并且不可以跳过任何一行数据。...END; 我们执行完上面的存储过程后,就可以调用该存储过程了 CALL PROC1(); 得到结果: 这里肯定有小伙伴好奇,customers表里明明有7条记录,为什么只显示了1条记录?...,服务器给我一条,我处理一条,然后直到循环处理结束,客户端不会一次接受到全部数据 第一种方式会出现内存泄露问题, 第二种不会,但会长时间占用服务器链接 游标简单理解就是:告诉服务器要查询数据结果集...正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表 正在参与 腾讯云开发者社区数据库专题有奖征文。

10.4K270

Java并发编程实战总结 (一)

前提 首先该场景是一个酒店开房业务。为了朋友们阅读简单,把业务都简化了。 业务:开房后会添加一条账单,添加一条房间排期记录房间排期主要是为了房间使用时间不冲突。...首先openRoom方法是非静态方法,那么synchronized锁定就是this对象。而Spring@Service注解类是多例,所以并不能把synchronized关键字添加到方法上。...在这次改进当中,使用了第五章 等待-通知机制,添加了RoomAllocator房间资源分配器,当开房时候需要在RoomAllocator当中获取锁资源,获取失败则线程进入wait()等待状态。...当线程释放锁资源则notiryAll()唤醒所有等待线程。...总结 上面的例子可能会有其他更好方法去解决,但是实力不允许这么做....。这个例子也是自己在项目中搞事情搞出来。毕竟没有实战经验,只有理论,不足以学好并发。

49030
领券