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移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。




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

总结
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)]



1万+

被折叠的 条评论
为什么被折叠?



