一.实验内容
实现一个生日备忘簿
二.实验目的
1. 学习 SQLite 数据库的使用;
2. 学习ContentProvider的使用;
3. 复习Android界面编程。
三.实验要求
1、 使用 SQLite 数据库保存生日的相关信息,使得每次运行程序都可以显示出已经存储在数据库里的内容;
2、 使用 ContentProvider 来获取对应寿星的电话号码;
3、功能简介
1) 主界面包含增加生日条目按钮和生日信息列表
2) 点击<增加条目>按钮跳转到次界面;
3) 次界面输入生日相关信息后点击<增加>按钮会返回主界面(同时更新主界面的生日 信息列表),且姓名字段不能为空,姓名字段不能重复
4) 主界面中的列表点击事项处理:
a) 单击(查看并可修改该生日条目):
i. 弹出对话框,显示该条目的相关信息,并提供修改。
ii. 同时,显示该生日条目寿星的电话号码;
iii. 点击<保存修改>按钮,更新主界面的生日信息列表 b) 长按(可删除该生日条目)
b) 长按
i. 弹出对话框,显示是否删除;
ii. 点击<是>按钮,删除该生日条目,并更新主界面的生日信息列表
四.实验步骤
实现主页面和次页面。主页面的布局为一个RelativeLayout, 布局下为一个按钮,三个文本,以及一个LIstview。次页面的布局为一个TableLayout和一个按钮。
在实现主页面和次页面之后,在MainActivity.java里面实现点击增加条目按钮,页面跳转。
// "增加条目"按钮的点击函数 Button btn_add = (Button)findViewById(R.id.btn_add); btn_add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, new_Infor.class); startActivity(intent); } });
在实验次页面的逻辑功能之前,先创建一个SQLiteOpenHelper的子类和数据库。
public class myDB extends SQLiteOpenHelper { private static final String DB_NAME = "MyDatabase"; private static final String TABLE_NAME = "MyTable"; private static final int DB_VERSION = 1; // 调用父类构造函数 public myDB(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { String CREATE_TABLE = "CREATE TABLE if not exists " + TABLE_NAME + " (_id INTEGER PRIMARY KEY, name TEXT, birthday TEXT, gift TEXT)"; sqLiteDatabase.execSQL(CREATE_TABLE); // 直接执行创建数据库的语句 } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } }
实现次页面的逻辑功能。点击增加按钮,检测名字是否为空、重复,并将数据插入到数据库中。重写OnCreate代码如下:
@Override protected void o