作者:囡囡需要嗳 | 来源:互联网 | 2023-09-04 16:17
1. 布局代码:"http://schemas.android.com/apk/res/android"
android:layout_hljs-string">"match_parent"
android:layout_hljs-string">"match_parent"
android:background=
"@android:color/white" android:orientation=
"vertical" >
android:layout_hljs-string">"wrap_content" android:layout_hljs-string">"wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="5dip" android:text="学生管理系统" android:textColor="#99CCFF" android:textSize="23sp" /> android:layout_hljs-string">"fill_parent" android:layout_hljs-string">"wrap_content" android:layout_marginTop="5dip" android:padding="5dip" > android:id="@+id/tv_name" android:layout_hljs-string">"wrap_content" android:layout_hljs-string">"wrap_content" android:paddingLeft="15dip" android:paddingRight="15dip" android:text="姓名" android:textSize="18sp" /> android:id="@+id/tv_sex" android:layout_hljs-string">"wrap_content" android:layout_hljs-string">"wrap_content" android:layout_marginLeft="5dip" android:layout_toRightOf="@id/tv_name" android:paddingLeft="15dip" android:paddingRight="15dip" android:text="性别" android:textSize="18sp" /> android:id="@+id/tv_age" android:layout_hljs-string">"wrap_content" android:layout_hljs-string">"wrap_content" android:layout_marginLeft="5dip" android:layout_toRightOf="@id/tv_sex" android:paddingLeft="15dip" android:paddingRight="15dip" android:text="年龄" android:textSize="18sp" /> android:id="@+id/et_name" android:layout_hljs-string">"wrap_content" android:layout_hljs-string">"wrap_content" android:layout_alignLeft="@id/tv_name" android:layout_alignRight="@id/tv_name" android:layout_below="@id/tv_name" android:singleLine="true" /> android:id="@+id/et_sex" android:layout_hljs-string">"wrap_content" android:layout_hljs-string">"wrap_content" android:layout_alignLeft="@id/tv_sex" android:layout_alignRight="@id/tv_sex" android:layout_below="@id/tv_sex" android:singleLine="true" /> android:id="@+id/et_age" android:layout_hljs-string">"wrap_content" android:layout_hljs-string">"wrap_content" android:layout_alignLeft="@id/tv_age" android:layout_alignRight="@id/tv_age" android:layout_below="@id/tv_age" android:inputType="number" android:singleLine="true" /> android:id="@+id/btn_add_student" android:layout_hljs-string">"wrap_content" android:layout_hljs-string">"wrap_content" android:layout_alignBaseline="@id/et_age" android:layout_toRightOf="@id/et_age" android:text="添加学生" android:textSize="20sp" /> android:layout_hljs-string">"fill_parent" android:layout_hljs-string">"wrap_content" android:layout_weight="1" > android:id="@+id/ll_student_list" android:layout_hljs-string">"fill_parent" android:layout_hljs-string">"fill_parent" android:layout_margin="1dip" android:orientation="vertical" android:padding="5dip" > android:layout_hljs-string">"fill_parent" android:layout_hljs-string">"wrap_content" android:layout_marginTop="5dip" android:orientation="horizontal" > android:id="@+id/btn_save" android:layout_hljs-string">"wrap_content" android:layout_hljs-string">"wrap_content" android:layout_weight="1" android:text="保存数据" android:textSize="20sp" /> android:id="@+id/btn_restore" android:layout_hljs-string">"wrap_content" android:layout_hljs-string">"wrap_content" android:layout_weight="1" android:text="恢复数据" android:textSize="20sp" /> entities类:public class Student { private String name; private String sex; private Integer age; public Student (String name, String sex, Integer age) { super(); this .name = name; this .sex = sex; this .age = age; } public Student () { super(); } 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; } public Integer getAge () { return age; } public void setAge (Integer age) { this .age = age; } @Override public String toString () { return "Student [name=" + name + ", sex=" + sex + ", age=" + age + "]" ; } 业务逻辑代码:public class MainActivity extends Activity implements OnClickListener { private EditText etName; private EditText etSex; private EditText etAge; private LinearLayout llStudentList; private List studentList; private String filePath; @Override protected void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init () { etName = (EditText) findViewById(R.id.et_name); etSex = (EditText) findViewById(R.id.et_sex); etAge = (EditText) findViewById(R.id.et_age); llStudentList = (LinearLayout) findViewById(R.id.ll_student_list); findViewById(R.id.btn_save).setOnClickListener(this ); findViewById(R.id.btn_restore).setOnClickListener(this ); findViewById(R.id.btn_add_student).setOnClickListener(this ); studentList = new ArrayList(); filePath = Environment.getExternalStorageDirectory().getPath() + "/student.xml" ; } @Override public void onClick (View v) { switch (v.getId()) { case R.id.btn_save: if (studentList.size() > 0 ) { if (saveStudent2Local()) { Toast.makeText(this , "保存成功" , 0 ).show(); } else { Toast.makeText(this , "保存失败" , 0 ).show(); } } else { Toast.makeText(this , "当前没有数据" , 0 ).show(); } break ; case R.id.btn_restore: if (restoreStudentFromLocal()) { Toast.makeText(this , "恢复成功" , 0 ).show(); } else { Toast.makeText(this , "恢复失败" , 0 ).show(); } break ; case R.id.btn_add_student: addStudent(); break ; default : break ; } } private boolean restoreStudentFromLocal () { try { XmlPullParser parser = Xml.newPullParser(); parser.setInput(new FileInputStream(filePath), "utf-8" ); int eventType = parser.getEventType(); studentList.clear(); Student student = null ; String nodeName = null ; while (eventType != XmlPullParser.END_DOCUMENT) { nodeName = parser.getName(); switch (eventType) { case XmlPullParser.START_TAG: if ("student" .equals(nodeName)) { student = new Student(); } else if ("name" .equals(nodeName)) { student.setName(parser.nextText()); } else if ("sex" .equals(nodeName)) { student.setSex(parser.nextText()); } else if ("age" .equals(nodeName)) { student.setAge(Integer.valueOf(parser.nextText())); } break ; case XmlPullParser.END_TAG: if ("student" .equals(nodeName)) { studentList.add(student); } break ; default : break ; } eventType = parser.next(); } refreshStudentList(); return true ; } catch (Exception e) { e.printStackTrace(); } return false ; } private void refreshStudentList () { llStudentList.removeAllViews(); TextView childView; for (Student student : studentList) { childView = new TextView(this ); childView.setTextSize(23 ); childView.setTextColor(Color.BLACK); childView.setText(" " + student.getName() + " " + student.getSex() + " " + student.getAge()); llStudentList.addView(childView); } } private boolean saveStudent2Local () { try { XmlSerializer serializer = Xml.newSerializer(); serializer.setOutput(new FileOutputStream(filePath), "utf-8" ); serializer.startDocument("utf-8" , true ); serializer.startTag(null , "infos" ); for (Student stu : studentList) { serializer.startTag(null , "student" ); serializer.startTag(null , "name" ); serializer.text(stu.getName()); serializer.endTag(null , "name" ); serializer.startTag(null , "sex" ); serializer.text(stu.getSex()); serializer.endTag(null , "sex" ); serializer.startTag(null , "age" ); serializer.text(String.valueOf(stu.getAge())); serializer.endTag(null , "age" ); serializer.endTag(null , "student" ); } serializer.endTag(null , "infos" ); serializer.endDocument(); return true ; } catch (Exception e) { e.printStackTrace(); } return false ; } private void addStudent () { String name = etName.getText().toString(); String sex = etSex.getText().toString(); String age = etAge.getText().toString(); if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(sex) && !TextUtils.isEmpty(age)) { studentList.add(new Student(name, sex, Integer.valueOf(age))); TextView childView = new TextView(this ); childView.setTextSize(23 ); childView.setTextColor(Color.BLACK); childView.setText(" " + name + " " + sex + " " + age); llStudentList.addView(childView); } else { Toast.makeText(this , "请正确输入" , 0 ).show(); } }