Android 记事本NotePad,阿里P8大牛从零开始教Android开源框架

Android小项目:记事本 前几天写了一个Android记事本小程序,现在记录一下。 考虑到是记事本小程序,记录的内容只有文字,而且内容不会太长,所以选择使用SQLite数据库,数据存放在用户的手机上。 牵涉到数据库,那自然是一个实体。先设计实体数据表:DBHelper.java package com.ikok.notepad.DBUtil; import android.content.Context; impo 阅读详情

private static final int DATABASE_VERSION = 2;

private static final String DATABASE_NAME = “notes_db”;

private static final String NOTE_TABLE_NAME = “note”;

private static final String NOTE_COL_ID = “_id”;

private static final String NOTE_COL_TITLE = “title”;

private static final String NOTE_COL_CONTENT = “content”;

private static final String NOTE_COL_CREATED = “created”;

private static final String NOTE_COL_MODIFIED = “modified”;

private static final String[] NOTE_COL_PROJECTION = new String[] {

NOTE_COL_ID,

NOTE_COL_TITLE,

NOTE_COL_CONTENT,

NOTE_COL_CREATED,

NOTE_COL_MODIFIED

};

public NoteDbHelper(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

// Create table

@Override

public void onCreate(SQLiteDatabase db) {

String createNoteTableSql = “CREATE TABLE " + NOTE_TABLE_NAME + " (”

  • NOTE_COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + NOTE_COL_TITLE

  • " TEXT," + NOTE_COL_CONTENT + " TEXT," + NOTE_COL_CREATED

  • " INTEGER," + NOTE_COL_MODIFIED + " INTEGER" + “);”;

db.execSQL(createNoteTableSql);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// Drop older table if existed

db.execSQL("DROP TABLE IF EXISTS " + NOTE_TABLE_NAME);

// Create tables again

onCreate(db);

}

// Add new note

public int addNote(Note note) {

SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();

values.put(NOTE_COL_TITLE, note.getTitle());

values.put(NOTE_COL_CONTENT, note.getContent());

values.put(NOTE_COL_CREATED, note.getCreated());

values.put(NOTE_COL_MODIFIED, note.getModified());

// Insert to database

long rowId = db.insert(NOTE_TABLE_NAME, null, values);

// Close the database

db.close();

return (int) rowId;

}

// Get one note

public Note getNote(int id) {

SQLiteDatabase db = this.getReadableDatabase();

Cursor cursor = db.query(NOTE_TABLE_NAME, NOTE_COL_PROJECTION,

NOTE_COL_ID + “=?”, new String[] { String.valueOf(id) }, null,

null, null, null);

if (cursor != null)

cursor.moveToFirst();

Note note = new Note(cursor.getInt(0), cursor.getString(1),

cursor.getString(2), cursor.getLong(3), cursor.getLong(4));

return note;

}

// Get all notes

public List getAllNotes() {

List noteList = new ArrayList();

String selectQuery = "SELECT * FROM " + NOTE_TABLE_NAME;

SQLiteDatabase db = this.getWritableDatabase();

Cursor cursor = db.rawQuery(selectQuery, null);

// looping through all rows and adding to list

if (cursor.moveToFirst()) {

do {

Note note = new Note(cursor.getInt(0), cursor.getString(1),

cursor.getString(2), cursor.getLong(3),

cursor.getLong(4));

noteList.add(note);

} while (cursor.moveToNext());

}

// return contact list

return noteList;

}

public Cursor getAllNotesCursor() {

String selectQuery = "SELECT * FROM " + NOTE_TABLE_NAME;

SQLiteDatabase db = this.getReadableDatabase();

Cursor cursor = db.rawQuery(selectQuery, null);

return cursor;

}

public int updateNote(Note note) {

SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();

values.put(NOTE_COL_TITLE, note.getTitle());

values.put(NOTE_COL_CONTENT, note.getContent());

values.put(NOTE_COL_CREATED, note.getCreated());

values.put(NOTE_COL_MODIFIED, note.getModified());

return db.update(NOTE_TABLE_NAME, values,

NOTE_COL_ID + “=?”, new String[] { String.valueOf(note.getId()) });

}

public void deleteNote(int noteId) {

SQLiteDatabase db = this.getWritableDatabase();

db.delete(NOTE_TABLE_NAME, NOTE_COL_ID + “=?”,new String[] { String.valueOf(noteId) } );

db.close();

}

public void deleteAllNotes() {

SQLiteDatabase db = this.getWritableDatabase();

db.delete(NOTE_TABLE_NAME, null, null);

db.close();

}

}

新建和修改便签:

package com.zms.notepad;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

/**

  • Created by AlexZhou on 2015/2/3.

  • 11:14

*/

public class NoteNew extends Activity {

private EditText etTitle; //便签标题

private EditText etContent; //便签内容

private Button btnCancel;

private Button btnSave;

private int _noteId; //便签ID

private NoteDbHelper _db;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.note_new);

etTitle = (EditText) findViewById(R.id.etTitle);

etContent = (EditText) findViewById(R.id.etContent);

btnCancel = (Button) findViewById(R.id.btnCancel);

btnSave = (Button) findViewById(R.id.btnSave);

btnCancel.setOnClickListener(new OnClickListenerImp());

btnSave.setOnClickListener(new OnClickListenerImp());

_db = new NoteDbHelper(this);

Intent intent = getIntent();

_noteId = intent.getIntExtra(NoteList.EXTRA_NOTE_ID, -1);

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

总结

Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

上面分享的字节跳动公司2020年的面试真题解析大全,笔者还把一线互联网企业主流面试技术要点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。详情可以点击我的【Github】
如果你熟练掌握【Github】中列出的知识点,相信将会大大增加你通过前两轮技术面试的几率!这些内容都供大家参考,互相学习。

就先写到这,码字不易,写的很片面不好之处敬请指出,如果觉得有参考价值的朋友也可以关注一下我

①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包——————可以我的【Github】阅读下载,最后觉得有帮助、有需要的朋友可以点个赞

https://bbs.youkuaiyun.com/topics/618156601)中列出的知识点,相信将会大大增加你通过前两轮技术面试的几率!这些内容都供大家参考,互相学习。

就先写到这,码字不易,写的很片面不好之处敬请指出,如果觉得有参考价值的朋友也可以关注一下我

①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包——————可以我的【Github】阅读下载,最后觉得有帮助、有需要的朋友可以点个赞

[外链图片转存中…(img-V7IMMLUH-1710769809608)]

[外链图片转存中…(img-a9lnl6mQ-1710769809608)]

[外链图片转存中…(img-MWLalRE0-1710769809608)]

Android+PHP+MySQL登录注册系统实战指南 用户认证是移动应用开发的基础能力,其核心在于前后端安全、稳定、可调试的HTTP交互。理解HTTP请求响应机制、密码加盐哈希原理、SQL注入防护手段,是构建可靠登录系统的前提。技术价值体现在轻量可控——无需复杂框架即可实现跨安卓机型兼容、HTTPS通信、数据库防注入与字段级数据校验。典型应用场景包括教育类App、本地化工具软件等对高并发无要求但强调快速上线与自主运维的项目。本文聚焦Android原生客户端、PHP原生后端与MySQL数据库协同落地的真实链路,覆盖OkHttp网络调度、PDO预处理、utf8mb 阅读详情

相关推荐

新手友好型Android记事本开源项目完整教程

本文还有配套的精品资源,点击获取 简介:这是一个为初学者设计的Android开源记事本项目,以简单实用的记事本功能为基础,涉及Android应用开发的核心概念。项目展示了如何实现笔记的创建、编辑和删除等基本功能,以及如何处理AndroidManifest.xml配置、Activity界面设计、SQLite数据库操作、ContentProvider数据共享、Intent通信机...

weixin_42181686的博客 1225

【亲测免费】 Android记事本:一款小巧实用的开源记事工具

Android记事本:一款小巧实用的开源记事工具 【下载地址】Android记事本附apk和源码 Android记事本 (附apk和源码)欢迎使用Android记事本应用,这是一个专为Android用户打造的小巧实用的记事工具 项...

gitblog_06548的博客 1173

Android代码-[安卓开源]仿IOS自带九宫格密码记事本.zip

[安卓开源]仿IOS自带九宫格密码记事本.zip

qnote:轻量级开源记事本应用

qnote:轻量级开源记事本应用

2302_79444883的博客 943

Android实现记事本项目完整实例源代码

记事本项目源码,我的博客有详细描述。 一个记事本,能够输入标题和内容,创建日期、最新修改日期等信息。 如果没有输入标题则使用内容的第一句话作为标题,创建日期和修改日期均由系统自动生成,无需用户干预。 提供笔记列表,列表中笔记展示位标题、创建日期/修改日期 高级的可以给笔记添加照片或视频,这既可以自己拍摄也可以添加手机中已有的视频。

基于Android实现的简易记事本

该项目实现采用Eclipse开发 ,使用了Sqlite数据库实现记事本的增删改查,并且实现了启动页广告倒计时和用户登录功能

【GitHub项目推荐--一款免费、开源的笔记和待办事项应用程序,手机、电脑端都能用的记事本应用】【转载】

Joplin是免费的,如果你有服务器资源,可以为自己的朋友搭建这样的服务,通过适当的开发就可以saas化服务用户了,如果有1000个付费用户,每个月一万元,不就是创业起步了嘛!3. 促进个人成长:通过使用笔记和待办事项软件,用户可以培养良好的时间管理和工作规划习惯,从而提高自己的自律能力和执行力。待办事项软件还可以与日程表、日历等功能相结合,帮助用户更好地安排时间和任务。2. 项目管理和任务规划:Joplin 可以用于项目管理和任务规划,用户可以创建待办事项、设定截止日期和提醒,从而更好地安排工作和生活。

j8267643的博客 5682

Android项目源码史上最适合新手的记事本

Android项目源码史上最适合新手的记事本

Android 记事本NotePad,阿里P8大佬整理

Toast.makeText(NoteNew.this, “天启提示:标题或内容为空”, Toast.LENGTH_SHORT).show();Toast.makeText(NoteNew.this, “天启提示:放弃新建便签”, Toast.LENGTH_SHORT).show();Toast.makeText(NoteNew.this, “天启提示:便签保存成功”, Toast.LENGTH_SHORT).show();

m0_60607971的博客 505

交换机救命命令手册:华为 & 思科平台最全运维指令速查表

很多时候,真正拉你一把的不是“高深理论”,而是你手里有没有一份靠得住的命令速查表。这篇文章,希望能成为你“进可调试,退可排障”的一份救命卡片。

HuaweiLab_Peach的博客 1515

AutoCAD Plant 3D自定义零件库实战:手把手教你用Python创建参数化槽式三通

本文详细介绍了如何利用Python脚本在AutoCAD Plant 3D中创建参数化槽式三通组件,从API原理到实战开发,帮助用户构建高效的自定义零件库。通过Python装饰器系统控制零件属性和行为,实现几何建模、参数管理和规格编辑器集成,提升工业管道设计的标准化和效率。

weixin_28267011的博客 331

Java开发环境一站式搭建指南:从JDK到Tomcat全流程详解

Java开发环境搭建是每位开发者入门的必经之路,其核心在于理解工具链的协同工作原理。从Java虚拟机(JVM)的基础运行机制,到集成开发环境(IDE)的工程化管理,再到数据库与Web服务器的部署配置,每个环节都影响着开发效率。在工程实践中,合理配置环境变量、构建工具和依赖管理,能够显著提升项目的可维护性和团队协作流畅度。本文聚焦于当前企业主流的技术栈组合,通过详解JDK版本选择策略、MySQL服务配置优化以及Maven镜像加速等实用技巧,帮助开发者快速构建稳定高效的本地开发环境,为后续的框架学习和项目开发奠

weixin_33980459的博客 414

普冉PY32F003定时器实战:从HSE时钟配置到500ms精准闪烁LED(附完整代码)

本文详细解析了普冉PY32F003单片机定时器的实战应用,从HSE时钟配置到实现500ms精准LED闪烁。通过完整的代码示例和深入的技术分析,帮助开发者掌握定时器参数计算、中断优先级管理及调试技巧,适用于各类嵌入式开发项目。

weixin_30608503的博客 451

R语言镜像源配置全指南:清华/阿里云加速安装

R语言包安装失败、超时或连接中断,本质是CRAN默认源的地理延迟与协议缺陷问题。其核心原理在于HTTP下载机制对网络抖动敏感、缺乏断点续传与CDN支持。通过切换至国内高可用镜像源(如清华TUNA、阿里云),可显著提升TCP连接复用率、降低首字节延迟,并实现毫秒级边缘节点响应。该技术方案广泛应用于数据分析、生物信息(Bioconductor)、金融建模等需高频依赖R包的工程场景,尤其适配R 4.3.x及RStudio 2023+全平台环境。

weixin_34221332的博客 330

QT开发串口程序与单片机通讯

如果有对象对这个信号感兴趣,想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。的内容,虽然实现的功能很简单,但是QT上位机开发的步骤基本就是这些步骤,通过这个基础实例把这些套路摸透我们就可以接着进行后续更多QT程序地开发学习了。QWidget类:所有用户界面对象的基类,窗口部件是用户界面的一个基本单元,它从窗口系统接收鼠标,键盘和其他消息,并在屏幕上绘制自己。我们上面运行的上位机都是在Qt Creator中编译运行的,如果我们需要把编写好的可执行文件发送给别人使用的话还需要进行打包。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 946

手把手教你学pcie--内存管理和保护机制(一):MPU与其他内存管理和保护机制详解

MPU(Memory Protection Unit)是一种专门用于 ​。,这些机制通常协同工作,形成多层防御体系,兼顾安全性、性能和灵活性。

MHD0815的博客 279

AIGC(生成式AI)试用 44 -- 个人知识库

AIGC(生成式AI)试用 43 -- 个人知识库

Rolei的博客 1354

基于C#通过PLCSIM ADV仿真软件实现与西门子1500PLC的S7通信方法演示

基于C#通过PLCSIM ADV仿真软件实现与西门子1500PLC的S7通信方法演示

Robot_PLC_HMI_Automation 3159

Android:实现安卓小程序-记事本(备忘录)的开发

目录 1. 前言 2. 记事本功能需求 3. 部分关键代码解析及程序截图 3.1 记事本类的基本设计 3.2记事本的数据存储设计 3.3 主界面的设计 3.4 记事本的编辑 3.5 记事本的背景色设置 3.6 记事本的闹铃功能 3.7 高级搜索 4. 总结 1. 前言 在学习安卓开发这门课程中期,学会了安卓开发的基本知识,比如,UI组件的应用,Intent的应用等等,同...

DieForCode的博客 2万+

Python爬虫实战:基于最新技术栈的政府招标采购数据抓取与分析

对于企业、研究人员和数据分析师来说,能够高效地获取这些数据意味着可以获得宝贵的商业洞察和市场先机。随着反爬技术的不断升级和网站结构的日益复杂,传统的爬虫方法已经难以满足需求。我们将采用Selenium、Playwright等现代浏览器自动化工具,结合Scrapy框架和异步请求库,构建一个能够应对各种反爬措施的强大爬虫系统。Playwright是微软开发的浏览器自动化工具,支持Chromium、WebKit和Firefox,比Selenium更快速、更稳定。

2201_76125261的博客 1311

优快云专栏限时活动!福利公告必读!

本人优快云付费专栏周排名27名专业博主,每周文章平均阅读量约7w以上!

FJN110的博客 3153

【安卓开发】开源Notepad记事本APP项目(完整代码+说明文档)

记事本app

我们都有光明的未来 5448

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Android 开发简单记事本程序(附源码)

简单介绍一下功能:简单记事本只能添加文字内容,首页用ListView显示所有保存的事项和保存的时间,添加页面添加内容,点击首页的ListView可以查看内容,删除内容。 先看一下运行效果: 先建立数据库: package com.engineer.shizhibin.note; import android.content.Context; import an...

bingocoder的博客 6万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

android 记事本程序源码

应用实现密码登陆,记事本内容可增删改除等操作,实现了记事本的基本功能。 1、代码的目录 密码登陆使用的是sharepreference记录输入的密码 SharedPreferences preferences=getSharedPreferences("softinfo",Context.MODE_WORLD_READABLE); Editor edit

u011324501的专栏 3万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android 简单记事本开发(一)

本人刚学android没多久,想写个简单的记事本项目训练一下自己,顺便记录一下自己的学习历程,高手勿喷谢谢,有不足和改进之处还请大家提出意见。 本人习惯完成一个小功能块就记录一下,也方便加深印象。另外,后续编写过程中发现有地方需要新增或者修改的我会特别说明一下。 下面进入正题,首先来说明一下想实现的功能:1.主页面:上面是两个按钮,分别实现管理记事和新建记事的功能,管理记事本打算实现下拉菜单的

沐风的博客 3万+

Android记事本程序源码

1、MainActivitypackage cn.dccssq; import android.app.ListActivity; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import and

duchunchao的专栏 4万+
上一篇: 静态资源与首页展示【源码剖析】,富力地产面试经历详细分享
下一篇: ES6 逐点突破系列 -- Set Map,前端组件化开发框架,web开发小工具
普通网友
博客等级 码龄5年 5792粉丝 608原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值