zoukankan      html  css  js  c++  java
  • 简单记事本

    使用SQLite数据库保存记事本信息,记得在manifest.xml中注册相关activity

    配置文件:

    main.xml

    main.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <ListView 
            android:id="@+id/android:list" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" /> 
        <TextView 
            android:id="@+id/android:empty" 
             android:layout_width="wrap_content" 
             android:layout_height="wrap_content" 
             android:text="您还没有开始写日记呢!点击下边的Menu按钮开始写日记吧:)" />
    </LinearLayout>
    diary_row.xml
    notepad.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <TextView 
        android:text="@string/notepad_title" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"></TextView>
    <EditText 
        android:id="@+id/title" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"></EditText>
    <TextView 
        android:text="@string/notepad_body"  
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"></TextView>
    <EditText 
        android:id="@+id/body_text" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"></EditText>
    <Button 
        android:id="@+id/button" 
        android:text="@string/notepad_button" 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"></Button>
    </LinearLayout>
    strings.xml
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="hello">Hello World, MainActivity!</string>
        <string name="app_name">db2</string>
        
        <string name="diary_edit">编辑</string>
        <string name="notepad_title">标题:</string>
        <string name="notepad_body">内容:</string>
        <string name="notepad_button">确定:</string>
        <string name="menu_insert">Add</string> 
        <string name="menu_delete">Delete</string> 
        <string name="edit_diary">Edit</string>
    </resources>

    1.创建SQLiteOpenHelper的子类DatabaseHelper

    View Code
     1 package com.cb.test;
     2 import android.content.Context;
     3 import android.database.sqlite.SQLiteDatabase;
     4 import android.database.sqlite.SQLiteOpenHelper;
     5 
     6 public class DatabaseHelper extends SQLiteOpenHelper {
     7 
     8     private final static String DATABSE_NAME = "notepad";
     9     private final static int DATABASE_VERSION = 1;
    10     public final static String DATABSE_TABLE = "diary";
    11     private final static String DATABASE_CREATE = "create table " + DATABSE_TABLE + " (_id integer primary key autoincrement," + "title text not null, body text not null, created text not null);";
    12 
    13     public DatabaseHelper(Context context) {
    14         super(context, DATABSE_NAME, null, DATABASE_VERSION);
    15     }
    16 
    17 
    18     @Override
    19     public void onCreate(SQLiteDatabase db) {
    20         db.execSQL(DATABASE_CREATE);
    21     }
    22 
    23     @Override
    24     public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
    25         db.execSQL("DROP TABLE IF EXISTS " + DATABSE_TABLE);
    26         onCreate(db);
    27     }
    28 }

    2.创建DiaryDbAdapter来封装方法

    View Code
      1 package cn.dccssq;
      2 
      3 import java.util.Calendar;
      4 
      5 import android.content.ContentValues;
      6 import android.content.Context;
      7 import android.database.Cursor;
      8 import android.database.SQLException;
      9 import android.database.sqlite.SQLiteDatabase;
     10 import android.database.sqlite.SQLiteException;
     11 
     12 public class DiaryDbAdapter {
     13     public static final String KEY_TITLE = "title";
     14     public static final String KEY_BODY = "body";
     15     public static final String KEY_ROWID = "_id";
     16     public static final String KEY_CREATED = "created";
     17     
     18     private DatabaseHelper databaseHelper;
     19     
     20     private Context context;
     21     
     22     private SQLiteDatabase sqliteDatabase;
     23 
     24     public DiaryDbAdapter(Context context) {
     25         this.context = context;
     26     }
     27     
     28     /**
     29      * Open the Database
     30      */
     31     public void open(){
     32         databaseHelper = new DatabaseHelper(context);
     33         
     34         try
     35         {
     36             sqliteDatabase = databaseHelper.getWritableDatabase();
     37         }catch(SQLiteException e){
     38             sqliteDatabase = databaseHelper.getReadableDatabase();
     39         }
     40     }
     41     
     42     /**
     43      * Close the Database
     44      */
     45     public void close()
     46     {
     47         sqliteDatabase.close();
     48     }
     49     
     50     /**
     51      * Insert the Data
     52      * @param title
     53      * @param body
     54      * @return
     55      */
     56     public long createDiary(String title,String body){
     57         
     58         ContentValues content = new ContentValues();
     59         content.put(KEY_TITLE, title);
     60         content.put(KEY_BODY, body);
     61         Calendar calendar = Calendar.getInstance();
     62         String created = calendar.get(Calendar.YEAR) + "/"
     63                 + calendar.get(Calendar.MONTH) + "/"
     64                 + calendar.get(Calendar.DAY_OF_MONTH) + " "
     65                 + calendar.get(Calendar.HOUR_OF_DAY) + ":"
     66                 + calendar.get(Calendar.MINUTE);
     67         content.put(KEY_CREATED, created);
     68         
     69         return sqliteDatabase.insert(databaseHelper.DATABSE_TABLE, null, content);
     70     }
     71     
     72     /**
     73      * Delete the record
     74      * @param rowId
     75      * @return
     76      */
     77     public boolean deleteDiary(long rowId){
     78         
     79         String whereString = KEY_ROWID + "=" + rowId;
     80         return sqliteDatabase.delete(databaseHelper.DATABSE_TABLE, whereString, null)>0;
     81     }
     82     
     83     /**
     84      * Get all Records
     85      * @return
     86      */
     87     public Cursor getAllNotes()
     88     {
     89         String[] searchResult =  {KEY_ROWID, KEY_TITLE,KEY_BODY, KEY_CREATED};
     90         return sqliteDatabase.query(databaseHelper.DATABSE_TABLE, searchResult, null, null, null, null, null);
     91     }
     92     
     93     /**
     94      * Get the record by condition
     95      * @param rowId
     96      * @return
     97      * @throws SQLException
     98      */
     99     public Cursor getDiary(long rowId) throws SQLException{
    100         
    101         String[] searchResult =  {KEY_ROWID, KEY_TITLE,KEY_BODY, KEY_CREATED};
    102         String whereString = KEY_ROWID + "=" + rowId;
    103         
    104         Cursor mCursor = sqliteDatabase.query(true, databaseHelper.DATABSE_TABLE, searchResult, whereString, null, null, null, null, null);
    105         if(mCursor!=null){
    106             mCursor.moveToFirst();
    107         }    
    108         return mCursor;
    109     }
    110     
    111     public boolean updateDiary(long rowId ,String title,String body){
    112         
    113         ContentValues values = new ContentValues();
    114         values.put(KEY_TITLE, title);
    115         values.put(KEY_BODY,body);
    116         
    117         Calendar calendar = Calendar.getInstance();
    118         String created = calendar.get(Calendar.YEAR) + "/"
    119                 + calendar.get(Calendar.MONTH) + "/"
    120                 + calendar.get(Calendar.DAY_OF_MONTH) + " "
    121                 + calendar.get(Calendar.HOUR_OF_DAY) + ":"
    122                 + calendar.get(Calendar.MINUTE);
    123         values.put(KEY_CREATED, created);
    124         String whereString = KEY_ROWID + "=" + rowId;
    125         
    126         return sqliteDatabase.update(databaseHelper.DATABSE_TABLE, values, whereString, null)>0;
    127     }
    128 }

    3.主activity--MainActivity

    View Code
      1 package com.cb.test;
      2 
      3 import android.app.ListActivity;
      4 import android.content.Intent;
      5 import android.database.Cursor;
      6 import android.os.Bundle;
      7 import android.util.Log;
      8 import android.view.Menu;
      9 import android.view.MenuItem;
     10 import android.view.View;
     11 import android.widget.ListAdapter;
     12 import android.widget.ListView;
     13 import android.widget.SimpleCursorAdapter;
     14 
     15 public class MainActivity extends ListActivity {
     16     
     17     private static final int INSERT_ID = Menu.FIRST;
     18     
     19     private static final int DELETE_ID = Menu.FIRST + 1;
     20     
     21     private static final int ACTIVITY_CREATE = 0;
     22     
     23     private static final int ACTIVITY_EDIT = 1;
     24     
     25     private DiaryDbAdapter diaryDb;
     26 
     27     private int select_id = 0;
     28     
     29     private Cursor cursor;
     30     /** Called when the activity is first created. */
     31     @Override
     32     public void onCreate(Bundle savedInstanceState) {
     33         super.onCreate(savedInstanceState);
     34         setContentView(R.layout.main);
     35         // 为ListView注册上下文菜单
     36     registerForContextMenu(getListView());
     37 
     38         diaryDb =new DiaryDbAdapter(this);
     39         diaryDb.open();
     40         showListView();
     41     }
     42 
     43     @Override
     44     protected void onDestroy() {
     45         diaryDb.close();
     46         super.onDestroy();
     47     }
     48     
     49     private void showListView(){
     50         cursor = diaryDb.getAllNotes();
     51         
     52         String[] from = new String[]{DiaryDbAdapter.KEY_TITLE,DiaryDbAdapter.KEY_BODY,DiaryDbAdapter.KEY_CREATED};
     53         int[] to = new int[]{R.id.text01, R.id.text02,R.id.created};
     54         
     55         ListAdapter cursorAdapter = new SimpleCursorAdapter(this,R.layout.diary_row,cursor,from,to);
     56         setListAdapter(cursorAdapter);
     57     }
     58 
     59     @Override
     60     protected void onListItemClick(ListView l, View v, int position, long id) {
     61         // TODO Auto-generated method stub
     62         super.onListItemClick(l, v, position, id);
     63         select_id = (int) id;
     64 
     65         Cursor c = cursor;
     66         c.move(position);
     67         Intent intent = new Intent(this,ActivityDiary.class);
     68         intent.putExtra(DiaryDbAdapter.KEY_ROWID, id);
     69         intent.putExtra(DiaryDbAdapter.KEY_TITLE, c.getString(c
     70                 .getColumnIndexOrThrow(DiaryDbAdapter.KEY_TITLE)));
     71         intent.putExtra(DiaryDbAdapter.KEY_BODY, c.getString(c
     72                 .getColumnIndexOrThrow(DiaryDbAdapter.KEY_BODY)));
     73         startActivityForResult(intent, ACTIVITY_EDIT);
     74     }
     75 
     76     // 上下文菜单
     77     @Override
     78     public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
     79         super.onCreateContextMenu(menu, v, menuInfo);
     80         menu.add(0, DELETE_ID, 0, R.string.menu_delete);
     81     }
     82 
     83     @Override
     84     public boolean onContextItemSelected(MenuItem item) {
     85         switch (item.getItemId()) {
     86         case DELETE_ID:
     87             Log.i("DELETE_ID:", String.valueOf(select_id));
     88             diaryDb.deleteDiary(select_id);
     89             showListView();
     90             break;
     91         }
     92         return true;
     93     }
     94 
     95     @Override
     96     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     97         // TODO Auto-generated method stub
     98         super.onActivityResult(requestCode, resultCode, data);
     99         showListView();
    100     }
    101 
    102     @Override
    103     public boolean onCreateOptionsMenu(Menu menu) {
    104         // TODO Auto-generated method stub
    105         super.onCreateOptionsMenu(menu);
    106         menu.add(0,INSERT_ID,0,R.string.menu_insert);
    107         menu.add(0,DELETE_ID,0,R.string.menu_delete);
    108         return true;
    109     }
    110 
    111     @Override
    112     public boolean onMenuItemSelected(int featureId, MenuItem item) {
    113         // TODO Auto-generated method stub
    114         switch(item.getItemId()){
    115         case INSERT_ID:
    116             Log.i("INSERT:", String.valueOf(INSERT_ID));
    117             createDiary();
    118             return true;
    119         case DELETE_ID:
    120             Log.i("DELETE_ID:", String.valueOf(select_id));
    121             diaryDb.deleteDiary(select_id);
    122             showListView();
    123             return true;    
    124         }
    125         return super.onMenuItemSelected(featureId, item);
    126     }
    127  
    128     private void createDiary(){
    129         
    130         Intent intent = new Intent();
    131         intent.setClass(this, ActivityDiary.class);
    132         startActivityForResult(intent, ACTIVITY_CREATE);
    133     }
    134 }

    4.编辑的activity--ActivityDiary

    View Code
  • 相关阅读:
    LeetCode——面试题57
    翻译——5_Summary, Conclusion and Discussion
    LeetCode——114. 二叉树展开为链表
    LeetCode——1103. 分糖果 II
    LeetCode——337. 打家劫舍 III
    LeetCode——994. 腐烂的橘子
    Python——潜在会员用户预测
    Vue中div高度自适应
    webpack中使用vue-resource
    Mint UI组件库 和 Mui
  • 原文地址:https://www.cnblogs.com/chenbin7/p/2601253.html
Copyright © 2011-2022 走看看