簡易記事本實現與分析(二)輔助類的編寫

來源:互聯網
上載者:User

一、建立工程

 

在建立的工程中建立三個java檔案,NoteEdit.java,Notepadv3.java和NotesDbAdapter.java

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

Notepadv3.java作為主介面的Activity

NotesDbAdapter.java作為操作資料庫的類

匯入資源圖片到res/drawable檔案夾,這隻用到了兩張圖片,都是.9.png格式的:

 

二、NotesDbAdapter類編寫

 

首先把後面經常要用到操作資料庫的類寫好,

1.把記錄的標題,內容,主鍵定義為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.實現DatabaseHelper繼承SQLiteOpenHelper ,重寫onCreate()和onUpgrade()方法,在onCreate()裡面建立以資料庫,onUpgrade()負責資料庫升級操作。

        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.新增開啟和關閉資料庫的方法

public NotesDbAdapter open() throws SQLException{}

public void close(){}

5.建立一條新的記事和刪除記事的方法

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

public boolean deleteNote(long rowId){}

6.查詢資料庫,返回所有記事

public Cursor fetchAllNotes(){}

7.根據id查詢特定記事,

public Cursor fetchNote(long rowId) throws SQLException{}

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

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

以上函數的實現參見源碼。

 

三、NoteEdit類編寫

 

1.獲得NotesDbAdapter 的引用,聲明幾個顯示標題,內容的textview

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

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

onCreate()中要做的是,主要是判斷傳入參數savedInstanceState的值,將頁面內的幾個textview賦上相應的值有populateFields()方法實現,為確定按鈕添加監聽。

實現onCreate()中調用的populateFields()方法,通過已經獲得的id值,查詢資料庫,並將資料顯示到頁面

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)));
}

還有一個重點,把正條記事的內容儲存到資料庫當中。在onSave()中實現

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);
}
}

 

上面實現的onSave()要在onSaveInstanceState()和onPause()中調用,以免資料丟失

 

未完待續。。。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.