后台 开发四

public class MainActivity extends Activity implements OnClickListener {
private static final String TAG = “MainActivity”;

private EditText et_name;
private EditText et_sex;
private EditText et_age;
private LinearLayout llStudentGroup; //学生列表控件
private List studentList;

private File cacheFile = new File(Environment.getExternalStorageDirectory(), “student.xml”);

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}

private void init() {
studentList = new ArrayList();

et_name = (EditText) findViewById(R.id.et_name);
et_sex = (EditText) findViewById(R.id.et_sex);
et_age = (EditText) findViewById(R.id.et_age);

llStudentGroup = (LinearLayout) findViewById(R.id.ll_student_group);

findViewById(R.id.btn_add).setOnClickListener(this);
findViewById(R.id.btn_save).setOnClickListener(this);
findViewById(R.id.btn_restore).setOnClickListener(this);

}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_add: //添加学生
//取出数据
String name = et_name.getText().toString();
String sex = et_sex.getText().toString();
String age = et_age.getText().toString();

//控制台打印数据
Log.e(TAG, “name=”+name+",sex="+sex+",age="+age);

//判断是否有数据为空
if(TextUtils.isEmpty(name) || TextUtils.isEmpty(sex) || TextUtils.isEmpty(age)){
Toast.makeText(this, “请重新输入”, 0).show();
break;
}
//封装成Student实体
Student student = new Student(name, sex, Integer.valueOf(age));
//添加到学生列表中
addToStudentList(student);
break;
case R.id.btn_save: //保存数据
boolean isSuccess = saveStudentList();
if(isSuccess){
Toast.makeText(this, “保存成功”, 0).show();
}else {
Toast.makeText(this, “保存失败”, 0).show();
}
break;
case R.id.btn_restore: //恢复数据
// 恢复数据之前, 需要把集合中和LinearLayout中的数据全部清空
studentList.clear();

// 把线性布局中所有的控件全部移除
llStudentGroup.removeAllViews();

//从文件中读取数据
List readStudentList = readStudentList();

// 把取出回来的数据, 一条一条的添加到学生列表中
for (Student stu : readStudentList) {
addToStudentList(stu);
}
break;
default:
break;
}
}
private List readStudentList() {
List studentList = null;
// 构建一个XmlPullParser解析器对象
XmlPullParser parser = Xml.newPullParser();
// 指定要解析的文件
try {
parser.setInput(new FileInputStream(cacheFile), “utf-8”);
// 开始解析: 获取EventType解析事件, 循环去判断事件
int eventType = parser.getEventType();
Student student = null;
while(eventType!=XmlPullParser.END_DOCUMENT){
// 当前的事件类型不等于结束的document, 继续循环
String tagName = parser.getName();

switch (eventType) {
case XmlPullParser.START_TAG:
if(“students”.equals(tagName)){//
studentList = new ArrayList();
}else if (“student”.equals(tagName)) {//
student = new Student();
}else if (“name”.equals(tagName)) {
student.setName(parser.nextText());
}else if (“sex”.equals(tagName)) {
student.setSex(parser.nextText());
}else if(“age”.equals(tagName)){
student.setAge(Integer.valueOf(parser.nextText()));
}
break;

case XmlPullParser.END_TAG:
if(“student”.equals(tagName)){
studentList.add(student);
}
break;

default:
break;
}
eventType = parser.next(); // 取下一个事件类型
}

return studentList;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

private boolean saveStudentList() {
String path = cacheFile.getPath();
Log.e(TAG, “保存文件的路径:”+path);

//得到一个序列化对象
XmlSerializer serializer = Xml.newSerializer();
try {
//指定输出流
serializer.setOutput(new FileOutputStream(cacheFile), “utf-8”);

serializer.startDocument(“utf-8”, true);

serializer.startTag(null, “students”);
for (Student student : studentList) {
Log.e(TAG, student.toString());
serializer.startTag(null, “student”);

serializer.startTag(null, “name”);
serializer.text(student.getName());
serializer.endTag(null, “name”);
serializer.startTag(null, “sex”);

serializer.text(student.getSex());

serializer.endTag(null, “sex”);
serializer.startTag(null, “age”);
serializer.text(String.valueOf(student.getAge()));
serializer.endTag(null, “age”);
serializer.endTag(null, “student”);
}
serializer.endTag(null, “students”);

serializer.endDocument();

return true;
} catch(Exception e) {
e.printStackTrace();
}

return false;
}

/**

  • 把给定的学生添加到学生列表中
  • @param student
    */
    private void addToStudentList(Student student) {
    // 把学生信息添加到集合中, 为了方便呆会去保存
    studentList.add(student);

//创建一个TextView对象,并设置其内容
TextView tv = new TextView(this);
String text = " “+student.getName()+” “+student.getSex()+” "+student.getAge();
tv.setText(text);
tv.setTextSize(18);
tv.setTextColor(Color.BLACK);

// 把TextView添加到学生列表中
llStudentGroup.addView(tv);
}
}
————————————————
版权声明:本文为CSDN博主「weixin_45803852」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45803852/article/details/113933388

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值