日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简易记事本实现与分析(二)辅助类的编写

發(fā)布時(shí)間:2025/5/22 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简易记事本实现与分析(二)辅助类的编写 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、新建工程

?

在新建的工程中建立三個(gè)java文件,NoteEdit.java,Notepadv3.java和NotesDbAdapter.java

NoteEdit.java作為編輯修改記錄的Activity

Notepadv3.java作為主界面的Activity

NotesDbAdapter.java作為操作數(shù)據(jù)庫的類

導(dǎo)入資源圖片到res/drawable文件夾,這只用到了兩張圖片,都是.9.png格式的:

?

二、NotesDbAdapter類編寫

?

首先把后面經(jīng)常要用到操作數(shù)據(jù)庫的類寫好,

1.把記錄的標(biāo)題,內(nèi)容,主鍵定義為string常量

??

public static final String KEY_TITLE = "title";
public static final String KEY_BODY = "body";
public static final String KEY_ROWID = "_id";

?

2.除此之外,必須有我們繼成了SQLiteOpenHelper的類,和SQLiteDatabase

private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;

?

3.實(shí)現(xiàn)DatabaseHelper繼承SQLiteOpenHelper ,重寫onCreate()和onUpgrade()方法,在onCreate()里面創(chuàng)建以數(shù)據(jù)庫,onUpgrade()負(fù)責(zé)數(shù)據(jù)庫升級(jí)操作。

public void onCreate(SQLiteDatabase db)
{

db.execSQL(DATABASE_CREATE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion
+ ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS notes");
onCreate(db);
}



4.新增打開和關(guān)閉數(shù)據(jù)庫的方法

public NotesDbAdapter open() throws SQLException{}

public void close(){}



5.創(chuàng)建一條新的記事和刪除記事的方法

public long createNote(String title, String body){}

public boolean deleteNote(long rowId){}



6.查詢數(shù)據(jù)庫,返回所有記事

public Cursor fetchAllNotes(){}



7.根據(jù)id查詢特定記事,

public Cursor fetchNote(long rowId) throws SQLException{}



8.可以用來修改一條已有的記事的方法

public boolean updateNote(long rowId, String title, String body){}



以上函數(shù)的實(shí)現(xiàn)參見源碼。

?

三、NoteEdit類編寫

?

1.獲得NotesDbAdapter 的引用,聲明幾個(gè)顯示標(biāo)題,內(nèi)容的textview

private NotesDbAdapter mDbHelper;
private EditText mTitleText;
private EditText mBodyText;
private Long mRowId;



2.重寫onCreate(),onResume(),onPause(),onSaveInstanceState()方法:

onCreate()中要做的是,主要是判斷傳入?yún)?shù)savedInstanceState的值,將頁面內(nèi)的幾個(gè)textview賦上相應(yīng)的值有populateFields()方法實(shí)現(xiàn),為確定按鈕添加監(jiān)聽。

實(shí)現(xiàn)onCreate()中調(diào)用的populateFields()方法,通過已經(jīng)獲得的id值,查詢數(shù)據(jù)庫,并將數(shù)據(jù)顯示到頁面

if (mRowId != null)
{
Cursor note = mDbHelper.fetchNote(mRowId);
startManagingCursor(note);
mTitleText
.setText(note.getString(note.getColumnIndexOrThrow(NotesDbAdapter.KEY_TITLE)));
mBodyText.setText(note.getString(note.getColumnIndexOrThrow(NotesDbAdapter.KEY_BODY)));
}



還有一個(gè)重點(diǎn),把正條記事的內(nèi)容保存到數(shù)據(jù)庫當(dāng)中。在onSave()中實(shí)現(xiàn)

private void saveState()
{
String title = mTitleText.getText().toString();
String body = mBodyText.getText().toString();

if (mRowId == null)
{
long id = mDbHelper.createNote(title, body);
if (id > 0)
{
mRowId = id;
}
} else
{
mDbHelper.updateNote(mRowId, title, body);
}
}



?

上面實(shí)現(xiàn)的onSave()要在onSaveInstanceState()和onPause()中調(diào)用,以免數(shù)據(jù)丟失

?

未完待續(xù)。。。

轉(zhuǎn)載于:https://www.cnblogs.com/avenwu/archive/2012/02/23/2365091.html

總結(jié)

以上是生活随笔為你收集整理的简易记事本实现与分析(二)辅助类的编写的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。