天天看點

Android 記事本NotePad

起初接觸Android的時候用Eclipse寫的小應用,後面手動移植到了Android Studio中,可以建立,檢視,删除便簽等,今天整理一下代碼,完整的代碼可以在我的GitHub上看到,連結在文末。

DbHelper:

package com.zms.notepad;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by AlexZhou on 2015/2/3.
 * 11:12
 */
public class NoteDbHelper extends SQLiteOpenHelper {

    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<Note> getAllNotes() {
        List<Note> noteList = new ArrayList<Note>();
        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);
        if (_noteId > 0) {
            Note note = _db.getNote(_noteId);
            etTitle.setText(note.getTitle());
            etContent.setText(note.getContent());
        }
    }

    private class OnClickListenerImp implements View.OnClickListener {
        @Override
        public void onClick(View v) {

            if (v == btnCancel) {
                Toast.makeText(NoteNew.this, "天啟提示:放棄建立便簽", Toast.LENGTH_SHORT).show();
                finish();
            } else if (v == btnSave) {
                String titleVoid = etTitle.getText().toString();
                String contentVoid = etContent.getText().toString();
                if (titleVoid.equals("") || contentVoid.equals("")) {
                    Toast.makeText(NoteNew.this, "天啟提示:标題或内容為空", Toast.LENGTH_SHORT).show();
                } else {
                    ToDatabase();    //插入資料庫
                    Toast.makeText(NoteNew.this, "天啟提示:便簽儲存成功", Toast.LENGTH_SHORT).show();
                    finish();
                }
            }
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.note_new_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_exit) {
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            android.os.Process.killProcess(android.os.Process.myPid());
            return true;
        } else if (id == R.id.action_about) {
            Intent intent = new Intent(this, About.class);
            startActivity(intent);
            return true;
        }
        return super.onOptionsItemSelected(item);

    }

    public final int ToDatabase() {
        String title = etTitle.getText().toString();
        String content = etContent.getText().toString();
        int newNoteId = -1;
        if (_noteId > 0) {
            Note note = _db.getNote(_noteId);
            note.setTitle(title);
            note.setContent(content);
            note.setModified(Long.valueOf(System.currentTimeMillis()));
            _db.updateNote(note);
        } else {
            Note newNote = new Note(title, content);
            newNoteId = _db.addNote(newNote);
        }
        return newNoteId;
    }
}
           

檢視便簽:

package com.zms.notepad;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;


public class Main extends ActionBarActivity {

    private ImageView ivLogo;
    private Button btnView;
    private Button btnNew;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ivLogo = (ImageView) findViewById(R.id.ivLogo);
        btnView = (Button) findViewById(R.id.btnView);
        btnNew = (Button) findViewById(R.id.btnNew);

        btnView.setOnClickListener(new OnClickListenerImp());
        btnNew.setOnClickListener(new OnClickListenerImp());
        ivLogo.setAlpha(50);     //Alpha 0-255,設定首頁Logo的透明度
    }

    private class OnClickListenerImp implements View.OnClickListener {
        @Override
        public void onClick(View v) {
            if (v == btnView) {
                Intent intent = new Intent(Main.this, NoteList.class);
                startActivity(intent);
            } else if (v == btnNew) {
                Intent intent = new Intent(Main.this, NoteNew.class);
                startActivity(intent);
            }
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();
        if (id == R.id.action_about) {
            //點選菜單蘭“關于”按鈕後觸發
            Intent intent = new Intent(this, About.class);
            startActivity(intent);
            return true;
        } else if (id == R.id.action_exit) {
            //點選菜單蘭“退出”按鈕後觸發
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_HOME);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            android.os.Process.killProcess(android.os.Process.myPid());
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

}
           

轉載請注明出處:周木水的CSDN部落格 http://blog.csdn.net/zhoumushui