安卓开发-学生信息管理系统(刷新UI)
程序员文章站
2022-05-13 20:24:10
...
重点功能:
- 数据库增删改查优化
- Listview使用
界面效果:
目录结构:
一:数据库增删改查优化
之前的查询为根据name判断是否存在sex为依据来判断该用户是否存在,因为sex为必选项,不能为空
更新:查询所有的用户信息并显示
在StudentDAO中添加查询所有用户信息的方法:
public List<Student> findAll(){
List<Student> students=new ArrayList<Student>();
SQLiteDatabase db=studentOpenHelper.getWritableDatabase();
Cursor cursor=db.rawQuery("select name,number,sex from students",null);
while(cursor.moveToNext()){
String name=cursor.getString(0);
String number=cursor.getString(1);
String sex=cursor.getString(2);
Student student=new Student();
student.setName(name);
student.setNumber(number);
student.setSex(sex);
students.add(student);
}
cursor.close();
db.close();
return students;
}
返回一个student列表,需要新建一个student类来保存数据:
class Student {
public String getName() {
return name;
}
public String getNumber() {
return number;
}
public String getSex() {
return sex;
}
public void setName(String name) {
this.name = name;
}
public void setNumber(String number) {
this.number = number;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", number='" + number + '\'' +
", sex='" + sex + '\'' +
'}';
}
private String name;
private String number;
private String sex;
}
二:Listview的使用
- 在MainActivity中设置Listview容器来接受xml文件,
<ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView>
- app打开的时候需要将数据显示到界面上
新建一个xml布局文件来保存接受到的数据:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_gravity="center_horizontal">
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textAlignment="center"
android:id="@+id/tv_name"
android:text="1a"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textAlignment="center"
android:id="@+id/tv_number"
android:text="1a"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textAlignment="center"
android:id="@+id/tv_sex"
android:text="1a"/>
</LinearLayout>
- 设置Listview适配器,使用inflact方法将xml文件填充到listview中
public class Myadapter extends BaseAdapter{
@Override
public int getCount() {
return students.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View newview=null;
if (view==null){
newview=View.inflate(MainActivity.this,R.layout.result,null);
}else{
newview=view;
}
TextView tv_name=newview.findViewById(R.id.tv_name);
TextView tv_number=newview.findViewById(R.id.tv_number);
TextView tv_sex=newview.findViewById(R.id.tv_sex);
tv_name.setText(students.get(i).getName().toString());
tv_number.setText(students.get(i).getNumber().toString());
tv_sex.setText(students.get(i).getSex().toString());
return newview;
}
}
- 封装到refreshdata方法中,在app初始化时调用:
public void refreshdata(){
students=studentDAO.findAll();
if(adpter==null){
adpter=new Myadapter();
}else{
Toast.makeText(this,"jjjjjjjj",0).show();
adpter.notifyDataSetChanged();
}
lv.setAdapter(adpter);
}
封装好的方法功能:刷新UI界面,先将数据库中的数据取出来放到xml中,在mainactivity中设置listview的适配器,将结果填充到listview当中