Android开发记事本(实现记事本的增删改查)

  •       实验简介

首先目的是做一个带有存储展示功能的记事本,那么就要使用数据库,本实验数据库采用SQL,页面设计背景图片采用晚上图片下载,这个实验中实现了记事本添加,删除,修改,查看等基本功能。

文件下载位置https://download.csdn.net/download/qq_40702349/12367803

  • 截图展示

  1. 打开记事本app,进入记事本主页面

 

  1. 点击新增按钮,进入到创建日志界面。

 

  1. 点击日志页面的确定按钮,日志上的内容已经存到了sql数据库中,可以点击查看。

 

  1. 点击自己写的日志,查看下是否能查看到信息

 

 

  1. 尝试是否可以继续新增

 

  1. 点击确定查看是否添加成功

 

  1. 可以对已经写了的日志进行操作,只需要鼠标长点一个选项即可。

 

  1. 尝试修改按钮是否可以运行,点击修改按钮,进入到日至编辑界面。

 

修改内容后

 

  1. 修改完成,查看是否修改成功

 

  1. 点击查看按钮

 

  1. 查看一下第一个文件

 

  1. 点击删除第一个文件

 

  1. 首页中点击删除的日至消失

 

  • 代码文件

Java代码实现

--------------------------DatabaseHelper

package com.example.homework6_1;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper {

    private String tableName = "record";

    private Context mContext = null;

    private String sql = "create table if not exists " + tableName +

           "(_id integer primary key autoincrement, " +

           "title varchar," +

           "content text," +

           "time varchar)";

    public DatabaseHelper(Context context, String name, CursorFactory factory, int version) {

       super(context, name, factory, version);

    }

    @Override

    public void onCreate(SQLiteDatabase db) {

       //创建表

       db.execSQL(sql);

    }

    @Override

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

}

---------------------------DataBaseManage

package com.example.homework6_1;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteException;

import android.util.Log;

 

public class DatabaseManage {

    private Context mContext = null;

    private SQLiteDatabase mSQLiteDatabase = null;//用于操作数据库的对象

    private DatabaseHelper dh = null;//用于创建数据库的对象

    private String dbName = "notepad.db";

    private int dbVersion = 1;

 

    public DatabaseManage(Context context){

       mContext = context;

    }

 

    /**

     * 打开数据库

     */

    public void open(){

       try{

           dh = new DatabaseHelper(mContext, dbName, null, dbVersion);

           if(dh == null){

              Log.v("msg", "is null");

              return ;

           }

           mSQLiteDatabase = dh.getWritableDatabase();

       }catch(SQLiteException se){

           se.printStackTrace();

       }

    }

 

    /**

     * 关闭数据库

     */

    public void close(){

       mSQLiteDatabase.close();

       dh.close();

    }

 

    //获取列表

    public Cursor selectAll(){

       Cursor cursor = null;

       try{

           String sql = "select * from record";

           cursor = mSQLiteDatabase.rawQuery(sql, null);

       }catch(Exception ex){

           ex.printStackTrace();

           cursor = null;

       }

       return cursor;

    }

 

    public Cursor selectById(int id){

       Cursor cursor = null;

       try{

           String sql = "select * from record where _id='" + id +"'";

           cursor = mSQLiteDatabase.rawQuery(sql, null);

       }catch(Exception ex){

           ex.printStackTrace();

           cursor = null;

       }

       return cursor;

    }

 

    //插入数据

    public long insert(String title, String content){

       long datetime = System.currentTimeMillis();

       long l = -1;

       try{

           ContentValues cv = new ContentValues();

           cv.put("title", title);

           cv.put("content", content);

           cv.put("time", datetime);

           l = mSQLiteDatabase.insert("record", null, cv);

       }catch(Exception ex){

           ex.printStackTrace();

           l = -1;

       }

       return l;

    }

 

    //删除数据

    public int delete(long id){

       int affect = 0;

       try{

           affect = mSQLiteDatabase.delete("record", "_id=?", new String[]{id+""});

       }catch(Exception ex){

           ex.printStackTrace();

           affect = -1;

       }

       return affect;

    }

 

    //修改数据

    public int update(int id, String title, String content){

       int affect = 0;

       try{

           ContentValues cv = new ContentValues();

           cv.put("title", title);

           cv.put("content", content);

           String w[] = {id+""};

           affect = mSQLiteDatabase.update("record", cv, "_id=?", w);

       }catch(Exception ex){

           ex.printStackTrace();

           affect = -1;

       }

       return affect;

    }

}

------------------------ListViewAdapter

package com.example.homework6_1;

 

import java.util.List;

import android.content.Context;

import android.text.format.DateFormat;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.TextView;

 

public class ListViewAdapter extends BaseAdapter {

    private List<String> listItems;

    private List<String> listItemTimes;

    private LayoutInflater inflater;

 

    public ListViewAdapter(Context context, List<String> listItems, List<String> times){

       this.listItems = listItems;

       this.listItemTimes = times;

       inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    }

 

    /**

     * 往列表添加条目

     * @param item

     */

    public void addListItem(String item, String time){

       listItems.add(item);

       listItemTimes.add(time);

    }

 

    /**

     * 删除指定位置的数据

     * @param position

     */

    public void removeListItem(int position){

       listItems.remove(position);

       listItemTimes.remove(position);

    }

 

    /**

     * 获取列表的数量

     */

    public int getCount() {

       return listItems.size();

    }

 

    /**

     * 根据索引获取列表对应索引的内容

     */

    public Object getItem(int position) {

       return listItems.get(position);

    }

 

    public long getItemId(int position) {

       return position;

    }

 

    /**

     * 通过该函数显示数据

     */

    public View getView(int position, View convertView, ViewGroup parent) {

       if(convertView == null){

           convertView = inflater.inflate(R.layout.notepad_list_item,null);

       }

       TextView text = (TextView)convertView.findViewById(R.id.listItem);

       text.setText(listItems.get(position));

       TextView time = (TextView)convertView.findViewById(R.id.listItemTime);

       String datetime = DateFormat.format("yyyy-MM-dd kk:mm:ss",

               Long.parseLong(listItemTimes.get(position))).toString();

       time.setText(datetime);

       return convertView;

    }

}

------------------------NotepadActivity

package com.example.homework6_1;

 

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.text.format.DateFormat;

import android.widget.TextView;

 

public class NotepadCheckActivity extends Activity {

    private TextView titleText = null;

    private TextView contentText = null;

    private TextView timeText = null;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.check_notepad);

 

       titleText = (TextView)findViewById(R.id.checkTitle);

       contentText = (TextView)findViewById(R.id.checkContent);

       timeText = (TextView)findViewById(R.id.checkTime);

 

       Intent intent = getIntent();//获取启动该Activity的intent对象

 

       String id = intent.getStringExtra("_id");

       String title= intent.getStringExtra("title");

       String time= intent.getStringExtra("time");

       String content = intent.getStringExtra("content");

 

       long t = Long.parseLong(time);

       String datetime = DateFormat.format("yyyy-MM-dd kk:mm:ss", t).toString();

       this.titleText.setText(title);

       this.timeText.setText(datetime);

       this.contentText.setText(content);

    }

}

--------------------NotepadcheckActivity

package com.example.homework6_1;

 

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.text.format.DateFormat;

import android.widget.TextView;

 

public class NotepadCheckActivity extends Activity {

    private TextView titleText = null;

    private TextView contentText = null;

    private TextView timeText = null;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.check_notepad);

 

       titleText = (TextView)findViewById(R.id.checkTitle);

       contentText = (TextView)findViewById(R.id.checkContent);

       timeText = (TextView)findViewById(R.id.checkTime);

 

       Intent intent = getIntent();//获取启动该Activity的intent对象

 

       String id = intent.getStringExtra("_id");

       String title= intent.getStringExtra("title");

       String time= intent.getStringExtra("time");

       String content = intent.getStringExtra("content");

 

       long t = Long.parseLong(time);

       String datetime = DateFormat.format("yyyy-MM-dd kk:mm:ss", t).toString();

       this.titleText.setText(title);

       this.timeText.setText(datetime);

       this.contentText.setText(content);

    }

}

----------------------NotepadEditActivity

package com.example.homework6_1;

 

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.View.OnTouchListener;

import android.widget.Button;

import android.widget.EditText;

 

public class NotepadEditActivity extends Activity {

    public static final int CHECK_STATE = 0;

    public static final int EDIT_STATE = 1;

    public static final int ALERT_STATE = 2;

    private int state = -1;

 

    private Button complete;//完成

    private EditText title;

    private EditText content;

    private DatabaseManage dm = null;

 

    private String id = "";

    private String titleText = "";

    private String contentText = "";

    private String timeText = "";

 

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.edit_notepad);

 

        Intent intent = getIntent();

        state = intent.getIntExtra("state", EDIT_STATE);

        complete = (Button) findViewById(R.id.editComplete);

        title = (EditText) findViewById(R.id.editTitle);

        content = (EditText) findViewById(R.id.editContent);

 

        complete.setOnClickListener(new EditCompleteListener());

        content.setOnTouchListener(new OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {

                content.setSelection(content.getText().toString().length());

                return false;

            }

        });

 

        if (state == ALERT_STATE) {//修改状态,赋值控件

            id = intent.getStringExtra("id");

            titleText = intent.getStringExtra("title");

            contentText = intent.getStringExtra("content");

            timeText = intent.getStringExtra("time");

            title.setText(titleText);

            content.setText(contentText);

        }

        dm = new DatabaseManage(this);

    }

 

    /**

     * 监听完成按钮

     */

    public class EditCompleteListener implements OnClickListener {

        public void onClick(View v) {

            titleText = title.getText().toString();

            contentText = content.getText().toString();

 

            try {

                dm.open();

                if (state == EDIT_STATE)//新增状态

                    dm.insert(titleText, contentText);

                if (state == ALERT_STATE)//修改状态

                    dm.update(Integer.parseInt(id), titleText, contentText);

                dm.close();

            } catch (Exception ex) {

                ex.printStackTrace();

            }

            Intent intent = new Intent();

            intent.setClass(NotepadEditActivity.this, NotepadActivity.class);

            NotepadEditActivity.this.startActivity(intent);

        }

    }

}

Layout页面设计

----------------------check_noteoad.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"

    android:background="@drawable/check_bg2">

   

    <TextView

       android:id="@+id/checkTitle"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:gravity="center"

       android:paddingLeft="5dp"

       android:paddingRight="5dp"

       android:textSize="20sp"

       android:textColor="#3c3f3c"

       android:layout_marginTop="15dp"

       android:text=""/>

 

    <TextView

       android:id="@+id/checkTime"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:layout_marginTop="5dp"

       android:gravity="right"

       android:paddingRight="5dp"

       android:textSize="10sp"

       android:textColor="#3c3f3c"

       android:text=""/>

 

    <TextView

       android:id="@+id/checkContent"

       android:layout_width="fill_parent"

       android:layout_height="200dp"

       android:layout_marginTop="5dp"

        android:lineSpacingExtra="4dp"

       android:paddingLeft="5dp"

       android:paddingRight="5dp"

       android:gravity="left"

       android:textSize="20sp"

       android:textColor="#3c3f3c"

       android:text=""/>

</LinearLayout>

------------------------edit_notepad.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical">

 

    <LinearLayout

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_gravity="center"

        android:layout_weight="6"

        android:background="@drawable/index"

        android:gravity="center"

        android:orientation="vertical">

 

        <EditText

            android:id="@+id/editTitle"

            android:layout_width="188dp"

            android:layout_height="wrap_content"

            android:layout_marginTop="100dp"

            android:background="@null"

            android:hint="请输入标题"

            android:singleLine="true"

            android:textColor="@android:color/background_dark" />

 

        <LinearLayout

            android:layout_width="fill_parent"

            android:layout_height="1dp"

            android:layout_marginTop="20dp"

            android:layout_marginLeft="30dp"

            android:layout_marginRight="30dp"

            android:background="@android:color/background_dark"

            android:orientation="vertical"></LinearLayout>

 

        <EditText

            android:id="@+id/editContent"

            android:layout_width="252dp"

            android:layout_height="wrap_content"

            android:layout_marginLeft="44dp"

            android:layout_marginRight="40dp"

            android:height="350dp"

            android:background="@null"

            android:gravity="top"

            android:hint="输入内容"

            android:lineSpacingExtra="4dp"

            android:singleLine="false"

            android:textColor="@android:color/background_dark" />

    </LinearLayout>

 

    <LinearLayout

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_weight="1"

        android:orientation="horizontal">

 

        <Button

            android:id="@+id/editComplete"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_weight="1"

            android:text="确  定"

            android:background="@android:color/holo_green_dark"

            android:textColor="@android:color/background_light" />

    </LinearLayout>

</LinearLayout>

-----------------------------footer.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="horizontal"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content">

 

    <Button

       android:id="@+id/addRecordButton"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_weight="1"

       android:text="新增"

       />

</LinearLayout>

---------------------------long_click.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="horizontal"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content">

   

    <Button

       android:id="@+id/deleteRecordButton"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_weight="1"

       android:text="删除"/>

 

    <Button

       android:id="@+id/checkRecordButton"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_weight="1"

       android:text="查看"/>

 

    <Button

       android:id="@+id/modifyRecordButton"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_weight="1"

       android:text="修改"/>

 

    <Button

       android:id="@+id/findRecordButton"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_weight="1"

       android:text="查找"/>

</LinearLayout>

-------------------------------main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical"

    android:paddingLeft="3dp"

    android:paddingRight="3dp"

    android:background="@android:color/holo_blue_dark">

   

    <ListView

        android:id="@+id/android:list"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:cacheColorHint="#00000000"/>

</LinearLayout>

-------------------notepad_list_item.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:id="@+id/listItem"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:gravity="left"

       android:textSize="20sp"

       android:paddingRight="10dp"

       android:paddingTop="3dp"

       android:paddingBottom="3dp"/>

 

    <TextView

       android:id="@+id/listItemTime"

       android:layout_width="fill_parent"

       android:layout_height="wrap_content"

       android:gravity="right"

       android:textSize="10sp"

       android:paddingRight="10dp"

       android:paddingTop="3dp"

       android:paddingBottom="3dp"/>

</LinearLayout>

文件下载地址在上方。

小剧场:真的是患难见真情----时间2020-4-26

  • 3
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 43
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值