-
实验简介
首先目的是做一个带有存储展示功能的记事本,那么就要使用数据库,本实验数据库采用SQL,页面设计背景图片采用晚上图片下载,这个实验中实现了记事本添加,删除,修改,查看等基本功能。
文件下载位置https://download.csdn.net/download/qq_40702349/12367803
-
截图展示
- 打开记事本app,进入记事本主页面
- 点击新增按钮,进入到创建日志界面。
- 点击日志页面的确定按钮,日志上的内容已经存到了sql数据库中,可以点击查看。
- 点击自己写的日志,查看下是否能查看到信息
- 尝试是否可以继续新增
- 点击确定查看是否添加成功
- 可以对已经写了的日志进行操作,只需要鼠标长点一个选项即可。
- 尝试修改按钮是否可以运行,点击修改按钮,进入到日至编辑界面。
修改内容后
- 修改完成,查看是否修改成功
- 点击查看按钮
- 查看一下第一个文件
- 点击删除第一个文件
- 首页中点击删除的日至消失
-
代码文件
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>
文件下载地址在上方。