package com.itheima27.sutdentmanager; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlSerializer; import android.graphics.Color; import android.os.Bundle; import android.os.Environment; import android.support.v7.app.ActionBarActivity; import android.text.TextUtils; import android.util.Xml; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.itheima27.sutdentmanager.entities.Student; class MainActivity extends ActionBarActivity implements OnClickListener { private EditText etName; etSex; etAge; private LinearLayout llStudentList; private List<Student> studentList; private String filePath; 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(btn_add_student).setOnClickListener(this); studentList = new ArrayList<Student>(); filePath = Environment.getExternalStorageDirectory().getPath() + "/student.xml"; } void onClick(View v) { switch (v.getId()) { case R.id.btn_save: if(studentList.size() > 0) { //将信息写到xml文件中 if(saveStudent2Local()) { Toast.makeText(this,"保存成功",0).show(); } else { Toast.makeText(保存失败 } } else { Toast.makeText(当前没有数据 } break; btn_restore: if(restoreStudentFromLocal()) { Toast.makeText(恢复成功 } 恢复失败 } break; btn_add_student: addStudent(); default: break; } } /** * 从xml中读出Student数据 * @return */ boolean restoreStudentFromLocal() { try { XmlPullParser parser = Xml.newPullParser(); parser.setInput(new FileInputStream(filePath),255); font-family: Consolas; font-size: 11pt; mso-font-kerning: 0pt;">"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 "name".equals(nodeName)) { student.setName(parser.nextText()); } "sex".equals(nodeName)) { student.setSex(parser.nextText()); } "age".equals(nodeName)) { student.setAge(Integer.valueOf(parser.nextText())); } break; END_TAG: "student".equals(nodeName)) { studentList.add(student); } default: break; } eventType = parser.next(); } refreshStudentList(); return true; } catch (Exception e) { e.printStackTrace(); } false; } 恢复student的List列表 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); } } boolean saveStudent2Local() { try { XmlSerializer serializer = Xml.newSerializer(); serializer.setOutput(new FileOutputStream("utf-8"); serializer.startDocument("utf-8",true); serializer.startTag(null,255); font-family: Consolas; font-size: 11pt; mso-font-kerning: 0pt;">"infos"); for (Student stu : studentList) { serializer.startTag("student"); serializer.startTag("name"); serializer.text(stu.getName()); serializer.endTag("name"); serializer.startTag("sex"); serializer.text(stu.getSex()); serializer.endTag("sex"); serializer.startTag("age"); serializer.text(String.valueOf(stu.getAge())); serializer.endTag("age"); serializer.endTag("student"); } serializer.endTag("infos"); serializer.endDocument(); false; } 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 = " + name + " + sex + " + age); llStudentList.addView(childView); } else { Toast.makeText(请正确输入 } } } |