安卓开发:学生信息管理小程序
16lz
2021-01-26
成品图
打开程序,实现添加学生,及时显示数据库内容,男女分别用相应的图片表示,点击垃圾桶可以删除这一行的学生,刷新数据,停留在刚才的位置:
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;
更多相关文章
- 一句话锁定MySQL数据占用元凶
- Android中使用SerialPort读取红外温度传感器数据
- android SharedPreferences保存应用数据
- Android(安卓)短信模块分析(八) MMS数据库表关系
- android APT 切换 annotationProcessor使用
- Intent的传递
- Android(安卓)数据存储——shared preferences
- Android学习笔记(十九)分享简单数据
- Bitmap和libyuv在JNI中的字节序