您的位置:首页 > 数据库

安卓第四天笔记-Sqlite

2016-02-27 23:24 411 查看


安卓第四天笔记-Sqlite


安卓第四天笔记-Sqlite

1.数据库的创建运行与更新

1.1.创建一个类继承SqliteOpenHelper



1.2.创建构造方法

/**

* 数据库创建类

* @author 刘楠

*

* 2016-2-20上午10:04:34

*/

public class DbSqliteOpenHelper extends SQLiteOpenHelper {

/**

*

* @param context 上下文

* @param name  数据库的名字如: students.db

* @param factory  游标工厂 ,类似JDBC中的ResultSet中的hasNext();

* @param version  数据库的版本

*/

public DbSqliteOpenHelper(Context context, String name,

CursorFactory factory, int version) {

super(context, name, factory, version);

}

/**

* 当数据库被创建时,执行,

* 只会执行一次

*/

@Override

public void onCreate(SQLiteDatabase db) {

}

/**

* 当数据版本升级时执行,

* 数据版本只能升不能降 从1开始

* 这里常用于更改数据库中的表的结构,如添加列,删除列,之类的,创建新的表

*/

@Override

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

}

}


1.3.更改构造方法

/**

*

* @param context 上下文

* @param name  数据库的名字如: students.db

* @param factory  游标工厂 ,类似JDBC中的ResultSet中的hasNext();

* @param version  数据库的版本

*/

public DbSqliteOpenHelper(Context context) {

super(context, "student.db", null, 1);

}

更改后

/**

*

* @param context 上下文

* @param name  数据库的名字如: students.db

* @param factory  游标工厂 ,类似JDBC中的ResultSet中的hasNext();

* @param version  数据库的版本 这里的版本必须大于0,如果为0就会报错

*/

public DbSqliteOpenHelper(Context context) {

super(context, "student.db", null, 1);

}


源码中的解释,数据库版本必须大于等于0,否则会抛出异常



将数据库版本设置为0,运行



不能降版本



1.4.在onCreate方法中创建数据库表

/**

* 当数据库被创建时,执行,

* 只会执行一次

*/

@Override

public void onCreate(SQLiteDatabase db) {

//创建数据库表

//sql    create table students(_id integer primary key, name varchar(30))

db.execSQL("create table students(_id integer primary key, name varchar(30))");

Log.i(TAG, "onCreate 方法执行了");

}


1.5.在Activity中实例化

/**

* 数据库初始化

* @author 刘楠

*

* 2016-2-20上午10:27:04

*/

public class MainActivity extends Activity {

private static final String TAG = "MainActivity";

private DbSqliteOpenHelper helper;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//实例化

helper = new DbSqliteOpenHelper(this);

Log.i(TAG, "helper 实例化");

//执行下方的代码后才会创建数据库

helper.getWritableDatabase();

}

}


创建数据库后并不会被创建,只有执行了,getReadDatabase或者getWriteDatabase(),

才会执行onCreate中的方法



运行查看LOG



1.6.数据已经创建,查看数据库

将数据库文件导出到桌面

SQLite Expert Professional 3打开



1.7.修改数据库版本,同是添加一列

/**

* 当数据版本升级时执行,

* 数据版本只能升不能降 从1开始

* 这里常用于更改数据库中的表的结构,如添加列,删除列,之类的,创建新的表

*/

@Override

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

Log.i(TAG, "onUpgrade 方法执行了");

//sql alter table  students add gender varchar(10)

//添加列

db.execSQL("alter table  students add gender varchar(10)");

}


查看日志



1.8.导出数据库中的文件再次查看



列已经添加成功

2.传统方式操作数据库

使用sql来操作数据库

/**

* 传统数据库操作工具类

* @author 刘楠

*

* 2016-2-20下午12:19:16

*/

public class StudentDao {

private static final String TAG = "StudentDao";

/*

* 操作数据库类

*/

private DbSqliteOpenHelper helper;

public StudentDao(Context context){

helper = new DbSqliteOpenHelper(context);

}

/**

* 插入方法

* @param name 姓名

* @param gender 性别

* @param stuno 学号

*/

public void insert(String name,String gender,String stuno){

//获取数据

SQLiteDatabase db = helper.getWritableDatabase();

String sql="insert into students values (null,?,?,?)";

//填充占位符

Object [] bindArgs={name,gender,stuno};

//执行SQL

db.execSQL(sql, bindArgs);

//关闭数据库连接

db.close();

}

/**

* 修改更改 update

* @param name 姓名

* @param gender 性别

* @param stuno 学号

*/

public void update(String name,String gender,String stuno){

//获取数据

SQLiteDatabase db = helper.getWritableDatabase();

String sql="update students set gender=?,stuno=? where name=?";

//填充占位符

Object [] bindArgs={gender,stuno,name};

//执行SQL

db.execSQL(sql, bindArgs);

//关闭数据库连接

db.close();

}

/**

* 删除

* @param name 姓名

*/

public void delete(String name){

//获取数据

SQLiteDatabase db = helper.getWritableDatabase();

String sql="delete from  students where name=?";

//填充占位符

Object [] bindArgs={name};

//执行SQL

db.execSQL(sql, bindArgs);

//关闭数据库连接

db.close();

}

/**

* 查询全部

*

*/

public void getAll(){

//获取数据

SQLiteDatabase db = helper.getReadableDatabase();

String sql="select _id,name,gender,stuno from students";

//执行SQL

Cursor cursor = db.rawQuery(sql, null);

while(cursor.moveToNext()){

int _id = cursor.getInt(cursor.getColumnIndex("_id"));

String name = cursor.getString(cursor.getColumnIndex("name"));

String gender = cursor.getString(cursor.getColumnIndex("gender"));

String stuno = cursor.getString(cursor.getColumnIndex("stuno"));

Log.i(TAG, "_id:"+_id+"name:"+name+",gender:"+gender+",stuno:"+stuno);

}

cursor.close();

//关闭数据库连接

db.close();

}

/**

* 查询全部

*

*/

public void getOne(String stuname){

//获取数据

SQLiteDatabase db = helper.getReadableDatabase();

String sql="select _id,name,gender,stuno from students where name=?";

String[] selectionArgs = {stuname};

//执行SQL

Cursor cursor = db.rawQuery(sql, selectionArgs);

while(cursor.moveToNext()){

int _id = cursor.getInt(cursor.getColumnIndex("_id"));

String name = cursor.getString(cursor.getColumnIndex("name"));

String gender = cursor.getString(cursor.getColumnIndex("gender"));

String stuno = cursor.getString(cursor.getColumnIndex("stuno"));

Log.i(TAG, "_id:"+_id+"name:"+name+",gender:"+gender+",stuno:"+stuno);

}

cursor.close();

//关闭数据库连接

db.close();

}

}


测试类

/**

* 测试传统方式数据库工具类

* @author 刘楠

*

* 2016-2-20下午12:48:37

*/

public class TestStudentDao extends  AndroidTestCase{

private  StudentDao studentDao;

@Override

protected void setUp() throws Exception {

studentDao = new StudentDao(getContext());

}

/**

* 测试插入

*/

public void testInsert(){

studentDao.insert("lisi", "man", "heimaAndroid2179");

}

/**

* 测试插入

*/

public void testDelete(){

studentDao.delete("liunan");

}

/**

* 测试修改

*/

public void testUpdate(){

studentDao.update("lisi", "女", "33");

}

/**

* 测试查询全部

*/

public void testGetAll(){

studentDao.getAll();

}

/**

* 测试查询一个

*/

public void testGetOne(){

studentDao.getOne("lisi");

}

}


3.数据版本判断与更新

/**

* 数据库创建类

* @author 刘楠

*

* 2016-2-20上午10:04:34

*/

public class DbSqliteOpenHelper extends SQLiteOpenHelper {

private static final String TAG = "DbSqliteOpenHelper";

/**

*

* @param context 上下文

* @param name  数据库的名字如: students.db

* @param factory  游标工厂 ,类似JDBC中的ResultSet中的hasNext();

* @param version  数据库的版本 这里的版本必须大于0,如果为0就会报错

*/

public DbSqliteOpenHelper(Context context) {

super(context, "student.db", null,4);

}

/**

* 当数据库被创建时,执行,

* 只会执行一次

* 第二闪运行是就不会执行了

*/

@Override

public void onCreate(SQLiteDatabase db) {

int version = db.getVersion();

Log.i(TAG, "version:"+version);

Log.i(TAG, "onCreate 方法执行了");

if(version==0){

db.execSQL("create table students(_id integer primary key autoincrement, name varchar(30),gender varchar(10),stuno varchar(50))");

Log.i(TAG, "version=0执行了");

}else{

//创建数据库表

//sql    create table students(_id integer primary key, name varchar(30))

db.execSQL("create table students(_id integer primary key autoincrement, name varchar(30))");

Log.i(TAG, "version不等0执行了");

}

}

/**

* 当数据版本升级时执行,

* 数据版本只能升不能降 从1开始

* 这里常用于更改数据库中的表的结构,如添加列,删除列,之类的,创建新的表

*/

@Override

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

Log.i(TAG, "onUpgrade 方法执行了");

Log.i(TAG, oldVersion+"");

Log.i(TAG, newVersion+"");

//算出新 旧版本的差

int difference = newVersion-oldVersion;

switch (difference) {

case 1:

db.execSQL("alter table  students add gender varchar(10)");

Log.i(TAG, difference+"");

break;

case 2:

db.execSQL("alter table  students add gender varchar(10))");

db.execSQL("alter table  students add stuno varchar(50))");

Log.i(TAG, difference+"");

break;

default:

break;

}

}

}


4.使用Android提供的API来操作数据库

/**

* 使用Android中的API来执行操作数据库

*

* @author 刘楠

*

*         2016-2-20下午12:19:16

*/

public class StudentDao2 {

private static final String TAG = "StudentDao2";

/*

* 操作数据库类

*/

private DbSqliteOpenHelper helper;

public StudentDao2(Context context) {

helper = new DbSqliteOpenHelper(context);

}

/**

* 插入方法

*

* @param name

*            姓名

* @param gender

*            性别

* @param stuno

*            学号

*/

public long insert(String name, String gender, String stuno) {

// 获取数据

SQLiteDatabase db = helper.getWritableDatabase();

// 填充占位符

ContentValues values = new ContentValues();

values.put("name", name);

values.put("gender", gender);

values.put("stuno", stuno);

String nullColumnHack = "values(null,?,?,?)";

// 执行SQL

long insert = db.insert("students", nullColumnHack, values);

// 关闭数据库连接

db.close();

return insert;

}

/**

* 修改更改 update

*

* @param name

*            姓名

* @param gender

*            性别

* @param stuno

*            学号

*/

public int update(String name, String gender, String stuno) {

// 获取数据

SQLiteDatabase db = helper.getWritableDatabase();

String sql = "update students set gender=?,stuno=? where name=?";

// 填充占位符

ContentValues values = new ContentValues();

values.put("gender", gender);

values.put("stuno", stuno);

// 执行SQL

int update = db.update("students", values, " name=?", new String[]{name});

// 关闭数据库连接

db.close();

return update;

}

/**

* 删除

*

* @param name

*            姓名

*/

public int delete(String name) {

// 获取数据

SQLiteDatabase db = helper.getWritableDatabase();

// 执行SQL

int delete = db.delete("students", " name=?", new String[]{name});

// 关闭数据库连接

db.close();

return delete;

}

/**

* 查询全部

*

*/

public void getAll() {

// 获取数据

SQLiteDatabase db = helper.getReadableDatabase();

String sql = "select _id,name,gender,stuno from students";

// 执行SQL

Cursor cursor = db.query("students", new String[]{"_id","name","gender","stuno"}, null, null, null, null, null);

while (cursor.moveToNext()) {

int _id = cursor.getInt(cursor.getColumnIndex("_id"));

String name = cursor.getString(cursor.getColumnIndex("name"));

String gender = cursor.getString(cursor.getColumnIndex("gender"));

String stuno = cursor.getString(cursor.getColumnIndex("stuno"));

Log.i(TAG, "_id:" + _id + "name:" + name + ",gender:" + gender

+ ",stuno:" + stuno);

}

cursor.close();

// 关闭数据库连接

db.close();

}

/**

* 查询全部

*

*/

public void getOne(String stuname) {

// 获取数据

SQLiteDatabase db = helper.getReadableDatabase();

// 执行SQL

Cursor cursor = db.query("students", new String[]{"_id","name","gender","stuno"}, "name =?", new String[]{stuname}, null, null, null);

while (cursor.moveToNext()) {

int _id = cursor.getInt(cursor.getColumnIndex("_id"));

String name = cursor.getString(cursor.getColumnIndex("name"));

String gender = cursor.getString(cursor.getColumnIndex("gender"));

String stuno = cursor.getString(cursor.getColumnIndex("stuno"));

Log.i(TAG, "_id:" + _id + "name:" + name + ",gender:" + gender

+ ",stuno:" + stuno);

}

cursor.close();

// 关闭数据库连接

db.close();

}

}


测试

/**

* 测试传统方式数据库工具类

* @author 刘楠

*

* 2016-2-20下午12:48:37

*/

public class TestStudentDao2 extends  AndroidTestCase{

private static final String TAG = "TestStudentDao2";

private  StudentDao2 studentDao2;

@Override

protected void setUp() throws Exception {

studentDao2 = new StudentDao2(getContext());

}

/**

* 测试插入

*/

public void testInsert(){

long result = studentDao2.insert("lisi", "man", "heimaAndroid2179");

Log.i(TAG, result+"");

}

/**

* 测试插入

*/

public void testDelete(){

int delete = studentDao2.delete("aa");

Log.i(TAG, delete+"");

}

/**

* 测试修改

*/

public void testUpdate(){

int update = studentDao2.update("lisi", "hh", "33");

Log.i(TAG, update+"");

}

/**

* 测试查询全部

*/

public void testGetAll(){

studentDao2.getAll();

}

/**

* 测试查询一个

*/

public void testGetOne(){

studentDao2.getOne("gh");

}

}


5.创建一个学生信息录入,使用ListView展示信息baseAdapter







布局

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

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

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".MainActivity" >

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center_horizontal"

android:text="学生信息管理系统"

android:textColor="#77ff0000"

android:textSize="29sp" />

<EditText

android:id="@+id/et_name"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:hint="请输入学生姓名" />

<!-- 性别 -->

<RadioGroup

android:id="@+id/rgp"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="horizontal" >

<!-- 性别男 -->

<RadioButton

android:id="@+id/rb_male"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:checked="true"

android:text="male" />

<!-- 性别女 -->

<RadioButton

android:id="@+id/rb_female"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:text="female" />

</RadioGroup>

<!-- 保存 -->

<Button

android:id="@+id/btn_save"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="保存" />

<!-- 查询 -->

<Button

android:id="@+id/btn_querty"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="查询全部学生信息" />

<ListView

android:id="@+id/lv_item"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:divider="#ff0000"

android:dividerHeight="2dp">

</ListView>

</LinearLayout>


ListView要使用的布局

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

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

android:layout_width="match_parent"

android:layout_height="wrap_content" >

<ImageView

android:id="@+id/iv_sex"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_margin="20dp"

android:src="@drawable/mr" />

<RelativeLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_margin="10dp"

android:layout_toRightOf="@id/iv_sex" >

<TextView

android:id="@+id/tv_no"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="学号" />

<TextView

android:id="@+id/tv_name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/tv_no"

android:text="姓名" />

<ImageView

android:id="@+id/iv_delete"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_centerVertical="true"

android:layout_margin="20dp"

android:src="@drawable/delete" />

</RelativeLayout>

</RelativeLayout>


数据库创建类

/**

* 数据库创建类,与维护的类 继承SQLiteOpenHelper

* @author 刘楠

*

* 2016-2-20下午6:32:00

*/

public class StudentSqliteOpenHelper extends SQLiteOpenHelper {

private static final String TAG = "StudentSqliteOpenHelper";

public StudentSqliteOpenHelper(Context context) {

super(context, "student.db", null, 2);

}

/**

* 创建数据库时,执行一次,只执行一次

* 用来创建数据表

*/

@Override

public void onCreate(SQLiteDatabase db) {

Log.i(TAG, "onCreate执行了");

//获取原来的版本,获取不到为0

int version = db.getVersion();

if(version==0){

//创建表

String sql= "create table students ( _id integer primary key autoincrement,  name varchar(30),gender varchar(10))";

db.execSQL(sql);

}else{

//创建表

String sql= "create table students ( _id integer primary key autoincrement,  name varchar(30))";

db.execSQL(sql);

}

}

/**

* 当数据库版本发生变化时执行

*/

@Override

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

Log.i(TAG, "onUpgrade执行了");

switch (oldVersion) {

case 1:

String sql= "alter table students add gender varchar(10)";

db.execSQL(sql);

break;

case 2:

break;

default:

break;

}

}

}


实体类

/**

* 学生的封装类

*

* @author 刘楠

*

*         2016-2-20下午6:31:20

*/

public class Student {

/*

* ID

*/

private int id;

/*

* 姓名

*/

private String name;

/*

* 性别

*/

private String gender;

public Student() {

super();

}

public Student(int id, String name, String gender) {

super();

this.id = id;

this.name = name;

this.gender = gender;

}

public String getGender() {

return gender;

}

public int getId() {

return id;

}

public String getName() {

return name;

}

public void setGender(String gender) {

this.gender = gender;

}

public void setId(int id) {

this.id = id;

}

public void setName(String name) {

this.name = name;

}

}


数据库工具类

/**

* 学生数据库访问工具类

*

* @author 刘楠

*

*         2016-2-20下午6:45:03

*/

public class StudentDao {

/*

* 数据库创建更新类

*/

private StudentSqliteOpenHelper helper;

public StudentDao(Context context) {

helper = new StudentSqliteOpenHelper(context);

}

/**

* 插入一条记录

*

* @param name

*            姓名

* @param gender

*            性别

* @return 返回插入后的_id

*/

public long insert(String name, String gender) {

// 获取数据库

SQLiteDatabase db = helper.getWritableDatabase();

// 插入的列

String nullColumnHack = "values(null,?,?)";

// 占位符

ContentValues values = new ContentValues();

values.put("name", name);

values.put("gender", gender);

// 执行

long insert = db.insert("students", nullColumnHack, values);

// 关闭连接

db.close();

return insert;

}

/**

* 修改一条记录

*

* @param name

*            姓名

* @param gender

*            性别

* @return 返回插入后的_id

*/

public long update(String name, String gender) {

// 获取数据库

SQLiteDatabase db = helper.getWritableDatabase();

// 插入的列

// 占位符

ContentValues values = new ContentValues();

values.put("gender", gender);

// 执行

int update = db.update("students", values, "name = ?",

new String[] { name });

// 关闭连接

db.close();

return update;

}

/**

* 删除一条记录

*

* @param name

*            姓名

*

* @return 返回删除后的_id

*/

public int delete(String name) {

// 获取数据库

SQLiteDatabase db = helper.getWritableDatabase();

// 执行

int delete = db.delete("students", "name = ?", new String[] { name });

// 关闭连接

db.close();

return delete;

}

/**

* 查询全部学生信息

*

* @return

*/

public List<Student> getAll() {

// 容器

List<Student> list = new ArrayList<Student>();

// 获取数据库

SQLiteDatabase db = helper.getReadableDatabase();

String[] columns = { "_id", "name", "gender" };

Cursor cursor = db.query("students", columns, null, null, null, null,

null);

while (cursor.moveToNext()) {

int id = cursor.getInt(cursor.getColumnIndex("_id"));

String name = cursor.getString(cursor.getColumnIndex("name"));

String gender = cursor.getString(cursor.getColumnIndex("gender"));

// 添加到集合中

list.add(new Student(id, name, gender));

}

// 关闭游标

cursor.close();

// 关闭

db.close();

return list;

}

}


Activity

/**

* 学生管理信息系统Activity

* 步骤

* 1.获取用户输入姓名与选择的性别

* 2.判断是否为空,为空就提示,不为空

* 3.保存数据

* 4.点击查询,在下方的ListView中显示所有的学生信息

* 5.为ListView设置BaseAdapter

* 6.实现getCount与getView方法

* 7.返回view

* 8.点击删除,弹出提示对话框,

* 9.取消什么也不做,确定就删除当前记录

* @author 刘楠

*

* 2016-2-20下午8:59:43

*/

public class MainActivity extends Activity implements OnClickListener {

/*

* 姓名

*/

private EditText et_name;

/*

* 性别

*/

private RadioGroup rgp;

/*

* 保存

*/

private Button btn_save;

/*

* 查询

*/

private Button btn_querty;

/*

* 学生列表

*/

private ListView lv_item;

/*

* 学生表数据库操作类

*/

private StudentDao studentDao;

/*

* 学生列表

*/

private List<Student> list;

/*

* 学生列表适配器

*/

private StuBaseAdapter stuBaseAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

et_name = (EditText) findViewById(R.id.et_name);

rgp = (RadioGroup) findViewById(R.id.rgp);

btn_save = (Button) findViewById(R.id.btn_save);

btn_querty = (Button) findViewById(R.id.btn_querty);

lv_item = (ListView) findViewById(R.id.lv_item);

/*

* 初始化数据库学生表的工具类

*/

studentDao = new StudentDao(this);

/*

* 设置监听事件

*/

btn_save.setOnClickListener(this);

btn_querty.setOnClickListener(this);

}

/**

* 单击事件监听器

*/

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.btn_save:

// 保存

save();

break;

case R.id.btn_querty:

// 查询

query();

break;

}

}

/**

* 查询学生列表

*/

private void query() {

refresh();

}

private void refresh() {

/*

* 查询全部学生信息

*/

list = studentDao.getAll();

if (stuBaseAdapter == null) {

// 判断 为空就new ,为ListView设置适配器

stuBaseAdapter = new StuBaseAdapter();

lv_item.setAdapter(stuBaseAdapter);

} else {

// 通知ListView列表改变

stuBaseAdapter.notifyDataSetChanged();

}

}

/**

* 保存学生信息

*/

private void save() {

// 获取学生输入的信息

String name = et_name.getText().toString().trim();

// 判断

if (TextUtils.isEmpty(name)) {

Toast.makeText(this, "学生姓名不能为空", Toast.LENGTH_SHORT).show();

return;

}

// 获取性别

String gender = "male";

switch (rgp.getCheckedRadioButtonId()) {

case R.id.rb_male:

gender = "male";

break;

case R.id.rb_female:

gender = "female";

break;

}

// 开始保存

long insert = studentDao.insert(name, gender);

if (insert > 0) {

Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();

et_name.setText("");

} else {

Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();

}

}

/**

* 学生列表适配器

*

* @author 刘楠

*

*         2016-2-20下午7:28:15

*/

private class StuBaseAdapter extends BaseAdapter {

private static final String TAG = "StuBaseAdapter";

@Override

public int getCount() {

return list.size();

}

@Override

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

Log.i(TAG, position + "");

View view;

if (convertView == null) {

view = View.inflate(MainActivity.this, R.layout.stu_item, null);

} else {

view = convertView;

}

// 得到学生对象

final Student student = list.get(position);

ImageView iv_sex = (ImageView) view.findViewById(R.id.iv_sex);

if ("male".equals(student.getGender())) {

iv_sex.setImageResource(R.drawable.mr);

} else if ("female".equals(student.getGender())) {

iv_sex.setImageResource(R.drawable.miss);

}

TextView tv_no = (TextView) view.findViewById(R.id.tv_no);

tv_no.setText("编号:" + student.getId());

TextView tv_name = (TextView) view.findViewById(R.id.tv_name);

tv_name.setText("姓名:" + student.getName());

ImageView iv_delete = (ImageView) view.findViewById(R.id.iv_delete);

iv_delete.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// 对话框来提示用户是否删除

AlertDialog.Builder builder = new AlertDialog.Builder(

MainActivity.this);

builder.setTitle("删除").setIcon(R.drawable.tools)

.setMessage("确定要删除这条记录吗");

builder.setPositiveButton("确定",

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog,int which) {

/*

* 删除方法

*/

int delete = studentDao.delete(student.getName());

if (delete > 0) {

Toast.makeText(MainActivity.this, "删除成功",

Toast.LENGTH_SHORT).show();

// 刷新列表

refresh();

} else {

Toast.makeText(MainActivity.this, "删除失败",

Toast.LENGTH_SHORT).show();

}

}

});

builder.setNegativeButton("取消", null);

builder.create().show();

}

});

return view;

}

@Override

public Object getItem(int position) {

return position;

}

@Override

public long getItemId(int position) {

return position;

}

}

}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: