packagecom.example.gird;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.content.ContentValues;importandroid.content.Context;importandroid.content.DialogInterface;importandroid.content.DialogInterface.OnClickListener;importandroid.database.Cursor;importandroid.database.sqlite.SQLiteCursor;importandroid.database.sqlite.SQLiteDatabase;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.AdapterView;importandroid.widget.AdapterView.OnItemLongClickListener;importandroid.widget.EditText;importandroid.widget.ListAdapter;importandroid.widget.ListView;importandroid.widget.TextView;public class GridActivity extendsActivity {public int DB_VERSION = 1;
SQLiteDatabase db;//DbHelper类在DbHelper.java文件里面创建的
ListView lv;
@Overridepublic voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.main);//建立打开数据库
db = openOrCreateDatabase("test.db", Context.MODE_PRIVATE, null);
db.execSQL("DROP TABLE IF EXISTS person");//创建person表
db.execSQL("CREATE TABLE person (_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, age SMALLINT)");//插入数据
for (int i = 0; i < 20; i++) {
Person person= newPerson();
person.name= "john" +i;
person.age= 30 -i;
db.execSQL("INSERT INTO person VALUES (NULL, ?, ?)", newObject[] {
person.name, person.age });
}
lv=(ListView) findViewById(R.id.lv);
updatelistview();//添加一个长按事件
lv.setOnItemLongClickListener(newOnItemLongClickListener() {
@Overridepublic boolean onItemLongClick(AdapterView>parent, View view,final int position, longid) {//实例化一个弹出框
new AlertDialog.Builder(GridActivity.this)
.setTitle("选择操作")
.setItems(new String[] { "更新", "删除", "取消"},//为弹出框上的选项添加事件
newOnClickListener() {
@Overridepublic voidonClick(DialogInterface dialog,intwhich) {switch(which) {//表示更新内容
case 0:
LayoutInflater inflater=getLayoutInflater();//自定义一个弹出口布局
final View layout =inflater
.inflate(
R.layout.dialog,
(ViewGroup) findViewById(R.id.dialog));
EditText nameTxt=(EditText) layout
.findViewById(R.id.editText1);
TextView ageTxt=(EditText) layout
.findViewById(R.id.editText2);
SQLiteCursor s_old=(SQLiteCursor) lv
.getItemAtPosition(position);final int _id_old =s_old.getInt(s_old
.getColumnIndex("_id"));final String name_old =s_old.getString(s_old
.getColumnIndex("name"));final String age_old =s_old.getString(s_old
.getColumnIndex("age"));
nameTxt.setText(name_old);
ageTxt.setText(age_old);newAlertDialog.Builder(
GridActivity.this)
.setTitle("更新")
.setView(layout)
.setPositiveButton("确定",newOnClickListener() {
@Overridepublic voidonClick(
DialogInterface dialog,intwhich) {
ContentValues cv= newContentValues();
String temp_name=((EditText) layout
.findViewById(R.id.editText1))
.getText()
.toString();
String temp_age=((EditText) layout
.findViewById(R.id.editText2))
.getText()
.toString();
cv.put("_id",
_id_old);
cv.put("name",
temp_name);
cv.put("age",
temp_age);
String[] id_index={ String
.valueOf(_id_old) };
db.update("person",
cv,"_id=?",
id_index);
updatelistview();
}
})
.setNegativeButton("取消",null).show();break;//删除记录
case 1://getItemAtPosition()得到一个item里的数据
SQLiteCursor s =(SQLiteCursor) lv
.getItemAtPosition(position);final int _id =s.getInt(s
.getColumnIndex("_id"));
String name=s.getString(s
.getColumnIndex("name"));
Log.i("id ::", _id + "");newAlertDialog.Builder(
GridActivity.this)
.setTitle("确定删除" +name+ "吗?")
.setPositiveButton("确定",newOnClickListener() {
@Overridepublic voidonClick(
DialogInterface dialog,intwhich) {
db.execSQL("delete from person where _id =?",newInteger[] { _id });
updatelistview();
}
})
.setNegativeButton("取消",newOnClickListener() {
@Overridepublic voidonClick(
DialogInterface dialog,intwhich) {
}
}).show();break;//取消操作
case 2:break;
}
}
}).show();return false;
}
});
}//更新listview
public voidupdatelistview() {
Cursor cr= db.query("person", null, null, null, null, null, null);
String id= cr.getColumnName(0);
String name= cr.getColumnName(1);
String age= cr.getColumnName(2);
String[] ColumnNames={ id, name, age };
ListAdapter adapter= new MySimpleCursorAdapter(this,
R.layout.listviewlayout, cr, ColumnNames,new int[] { R.id.id,
R.id.name, R.id.age });
lv.setAdapter(adapter);
}
@Overrideprotected voidonPause() {
onDestroy();
Log.i("message", "数据库连接销毁");super.onPause();
}
@Overrideprotected void onDestroy() {//关闭数据库
super.onDestroy();if (db != null) {
db.close();
}
}
}