成品图

打开程序,实现添加学生,及时显示数据库内容,男女分别用相应的图片表示,点击垃圾桶可以删除这一行的学生,刷新数据,停留在刚才的位置:

1.activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    xmlns:android1="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="学生信息管理系统" />    <EditText         android1:id="@+id/name"       android:layout_width="match_parent"        android:layout_height="wrap_content"        android1:hint="请输入学生姓名" />   <RadioGroup       android1:orientation="horizontal"        android1:id="@+id/sex"        android1:layout_width="match_parent"        android1:layout_height="wrap_content"           >        <RadioButton            android1:id="@+id/male"            android1:layout_width="0dp"            android1:layout_weight="1"            android1:layout_height="wrap_content"            android1:checked="true"            android1:text="男" />        <RadioButton            android1:id="@+id/female"            android1:layout_weight="1"            android1:layout_width="0dp"            android1:layout_height="wrap_content"            android1:text="女" />    RadioGroup>   <Button         android1:id="@+id/saveInfo"        android:onClick="saveInfo"       android:layout_width="match_parent"       android:layout_height="wrap_content"        android1:text="保存"        />       <ListView            android1:id="@+id/lv"            android:layout_width="match_parent"            android:layout_height="match_parent"           >ListView>LinearLayout>
2. item.xml(显示数据库学生的信息)

<?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="match_parent"    android:orientation="horizontal"   >    <ImageView         android:id="@+id/iv_sex"        android:layout_width="25dp"        android:layout_height="25dp"         --     需要在drawable-hdpi 中添加男人标志图片 -->        android:src="@drawable/man"        />    <TextView         android:id="@+id/tv_name"        android:layout_toRightOf="@id/iv_sex"        android:gravity="center_vertical"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="姓名"        android:textSize="22sp"        android:textColor="#ff0000"        android:layout_marginLeft="20dp"        />    <ImageView         android:id="@+id/iv_delete"        android:layout_alignParentRight="true"        android:layout_marginRight="50dp"        android:layout_width="25dp"        android:layout_height="25dp"         --     需要在drawable-hdpi 中添加垃圾桶图片 -->        android:src="@drawable/delete"        />RelativeLayout>

3. MainActivity.java

package com.zt.studentsystemv2;import java.util.List;import com.zt.studentdbhelper.Student;import com.zt.studentdbhelper.StudentDao;import android.app.Activity;import android.os.Bundle;import android.text.TextUtils;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.RadioButton;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {    private EditText name;    private RadioButton male,female;    private ListView lv;    private Button save;//  private LinearLayout viewInfo;    private String stuName,sex;    StudentDao dao = new StudentDao(this, "student.db", null, 1);    boolean isStart=true;    private List stuInfo;    private MyAdapter myAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);  //      viewInfo = (LinearLayout) findViewById(R.id.info);        lv=(ListView) findViewById(R.id.lv);        refreshData();    }    private void init() {           name = (EditText) findViewById(R.id.name);        male = (RadioButton) findViewById(R.id.male);        female = (RadioButton) findViewById(R.id.female);        save = (Button) findViewById(R.id.saveInfo);        stuName = name.getText().toString().trim();        if (TextUtils.isEmpty(stuName)){            alter("姓名不能为空");            isStart=false;            return ;        }        sex = male.isChecked()?"男":"女";        isStart=true;    }    private void alter(String info) {        Toast.makeText(this, info, 5).show();    }    public void saveInfo(View v) {        init();        if (!isStart) return;        dao.add(stuName, sex);        alter("保存成功!");        refreshData();    }    private void refreshData() {        stuInfo = dao.find();        if (myAdapter==null){            myAdapter = new MyAdapter();            lv.setAdapter(myAdapter);        }else{            //通知数据适配器更新数据,而不是new出来新的数据适配器            myAdapter.notifyDataSetChanged();        }    }    class MyAdapter extends BaseAdapter{        @Override        public View getView(final int position, View convertView, ViewGroup parent) {            View item = null;            if (convertView==null){                //把一个布局xml文件转化成view对象                item = View.inflate(MainActivity.this,R.layout.item, null);            }else{                //利用回收的对象                item = convertView;            }            ImageView sex=(ImageView) item.findViewById(R.id.iv_sex);            Student stu = stuInfo.get(position);            if ("男".equals(stu.getSex())){                sex.setImageResource(R.drawable.man);            }else{                sex.setImageResource(R.drawable.woman);            }            TextView tv = (TextView) item.findViewById(R.id.tv_name);            tv.setText(stu.getName());            ImageView delete = (ImageView) item.findViewById(R.id.iv_delete);            delete.setOnClickListener(new OnClickListener() {                                   @Override                public void onClick(View v) {                    Student stu = stuInfo.get(position);                    //从数据库删除数据                    dao.delete(stu.getName(), stu.getSex());                    alter("删除成功!");                    //更新ui                    refreshData();                }            });            return item;        }        @Override        public int getCount() {            return stuInfo.size();        }        @Override        public long getItemId(int position) {            // TODO Auto-generated method stub            return 0;        }        @Override        public Object getItem(int position) {            // TODO Auto-generated method stub            return null;        }    }}
4.sqlLite数据库的操作:

Student.java:

package com.zt.studentdbhelper;public class Student {    private String name;    private String sex;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }}

StudentDBHelper.java:

package com.zt.studentdbhelper;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;public class StudentDBHelper extends SQLiteOpenHelper {    public StudentDBHelper(Context context, String name, CursorFactory factory,            int version) {        super(context, name, factory, version);    }    @Override    public void onCreate(SQLiteDatabase db) {        db.execSQL("create table student(_id integer primary key autoincrement,name varchar(20),sex varchar(4) check(sex in ('男','女')))");    }    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        Log.i("MainActivity","建表完成!");    }}

StudentDao:

package com.zt.studentdbhelper;import java.util.ArrayList;import java.util.List;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;public class StudentDao {    private StudentDBHelper helper;    public StudentDao(Context context, String name, CursorFactory factory,            int version) {        helper=new StudentDBHelper(context, name, factory, version);    }    /**     * 添加一个学生     * @param name     * @param phone     */    public void add(String name,String sex) {        SQLiteDatabase  sqlHelper = helper.getWritableDatabase();        sqlHelper.execSQL("insert into student(name,sex)values(?,?)", new Object[]{name,sex});        sqlHelper.close();    }    public void delete(String name,String sex) {        SQLiteDatabase  sqlHelper = helper.getWritableDatabase();        sqlHelper.execSQL("delete from student where name =? and sex=?", new Object[]{name,sex});        sqlHelper.close();    }    public List  find() {        List list = new ArrayList();        SQLiteDatabase  sqlHelper = helper.getReadableDatabase();        Cursor  cur = sqlHelper.rawQuery("select name,sex from student where name is not null and  sex is not null", null);        boolean result = cur.moveToNext();        while (result){            Student stu= new Student();            stu.setName(cur.getString(0));            stu.setSex(cur.getString(1));            list.add(stu);            result= cur.moveToNext();        }        cur.close();        sqlHelper.close();        return list;    }}
查看数据库:

将/sdk/platform-tools加入环境变量;
cmd下使用adb shell ,cd 进入相应包,进入数据库目录
输入sqLite3 student.db,select * from student;

更多相关文章

  1. 一句话锁定MySQL数据占用元凶
  2. Android中使用SerialPort读取红外温度传感器数据
  3. android SharedPreferences保存应用数据
  4. Android(安卓)短信模块分析(八) MMS数据库表关系
  5. android APT 切换 annotationProcessor使用
  6. Intent的传递
  7. Android(安卓)数据存储——shared preferences
  8. Android学习笔记(十九)分享简单数据
  9. Bitmap和libyuv在JNI中的字节序

随机推荐

  1. 课程表学习代码发布
  2. 表单的练习
  3. Java并发编程学习笔记2
  4. Puppet自动化集群管理进阶篇
  5. 用 Go 构建一个 SQL 解析器
  6. 浅谈Cgroups V2
  7. istio组件mixer初学篇
  8. 九、输入输出重定向
  9. pandas.DataFrame.sample随机抽样
  10. 常见的监控软件及特点