详细解说都在代码里

在这里我只展示,几个类的主要代码

还是一句老话,注意写入权限的使用


操作类

package com.leige.stu.op;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.WriteAbortedException;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlSerializer;import android.os.Environment;import android.util.Log;import android.util.Xml;import com.leige.stu.domain.Student;public class StudentDaoimpl implements StudentDao{//保存到sd卡中@Overridepublic void save(List list){//获取解析器//解析范本/** * * 战三* * 18* * * */XmlSerializer write=Xml.newSerializer();File path=new File(Environment.getExternalStorageDirectory(),"students.xml");try {//实例化输出流FileOutputStream out=new FileOutputStream(path);//解析器绑定输出流,设置编码write.setOutput(out, "utf-8");//开始写xmlwrite.startDocument("utf-8",true);//开始根节点write.startTag(null, "students");//循环写入studentfor(Student stu:list){//子节点studentwrite.startTag(null, "student");//设置idwrite.attribute(null, "id", String.valueOf(stu.getId()));   write.startTag(null, "name");//name   write.text(stu.getName());   write.endTag(null, "name");    //age   write.startTag(null, "age");   write.text(String.valueOf(stu.getAge()));   write.endTag(null, "age");         //sex   write.startTag(null, "sex");   write.text(stu.getSex());   write.endTag(null, "sex");   write.endTag(null, "student");}write.endTag(null, "students");//结束write.endDocument();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();Log.i("err",e.toString());}}//读取//解析范本/** * * 战三* * 18* * * */@Overridepublic List getStuList(){//获取读取解析器XmlPullParser read=Xml.newPullParser();File path=new File(Environment.getExternalStorageDirectory(),"students.xml");List students=null;Student student=null;try {FileInputStream input=new FileInputStream(path);read.setInput(input,"utf-8");//获取时间类型int eventType=read.getEventType();//设置循环读取while(eventType!=XmlPullParser.END_DOCUMENT){//获取当前节点,名字String eleName=read.getName();switch (eventType) {case XmlPullParser.START_TAG:{if(eleName.equals("students")){//students//建立集合students=new ArrayList();}else if(eleName.equals("student")){//实例化对象student=new Student();//设置id属性student.setId(Integer.parseInt(read.getAttributeValue(null, "id")));}else if(eleName.equals("name")){//name//设置namestudent.setName(read.nextText());}else if(eleName.equals("age")){//agestudent.setAge(Integer.parseInt(read.nextText()));}else if(eleName.equals("sex")){//sexstudent.setSex(read.nextText());}}break;case XmlPullParser.END_TAG:{if(eleName.equals("student")){//加入集合students.add(student);}else if(eleName.equals("students")){return students;}}break;}eventType=read.next();}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}}


主活动类

package com.leige.stu;import java.util.ArrayList;import java.util.List;import java.util.zip.Inflater;import android.app.Activity;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.Spinner;import android.widget.TextView;import android.widget.Toast;import com.leige.stu.domain.Student;import com.leige.stu.op.StudentDao;import com.leige.stu.op.StudentDaoimpl;public class MainActivity extends Activity implements OnClickListener{private LinearLayout show=null;private Button add=null;private EditText name=null;private EditText age=null;private Spinner sex=null;private String sexValue;String[] arr;int count=0;//声明操作类StudentDao dao=new StudentDaoimpl();//声明保存集合List students=new ArrayList();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //实例化布局对象        show=(LinearLayout) findViewById(R.id.show);        add=(Button) findViewById(R.id.add);        name=(EditText) findViewById(R.id.name);        age=(EditText) findViewById(R.id.age);        sex= (Spinner) findViewById(R.id.sex);        arr=new String[]{"男","女"};        //设置下拉菜单内容        ArrayAdapter adapter=new ArrayAdapter(this,        android.R.layout.simple_spinner_item,arr);       //设置下拉列表的风格       adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);       //设置适配器       sex.setAdapter(adapter);       sex.setVisibility(View.VISIBLE);       sex.setOnItemSelectedListener(new OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> parent, View view,int position, long id) {// TODO Auto-generated method stubsexValue=arr[position];}@Overridepublic void onNothingSelected(AdapterView<?> parent) {// TODO Auto-generated method stub}});       for(Student stu:dao.getStuList()){       addView(stu);       students.add(stu);              }         }    //声明对象Student student;@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.add:{String stuName=name.getText().toString();if(stuName==""||stuName.trim().length()<=0){Toast.makeText(this, "姓名不能为空", Toast.LENGTH_SHORT).show();break;}int stuAge = 0;try {stuAge=Integer.parseInt(age.getText().toString());} catch (Exception e) {Toast.makeText(this, "年龄输入不正确", Toast.LENGTH_SHORT).show();break;}//实例化对象student=new Student();//设置对象    student.setAge(stuAge);student.setId(count++);student.setSex(sexValue);student.setName(stuName);//将students实例化,并把student加入集合students.add(student);addView(student);//清空编辑文本name.setText("");age.setText("");}break;case R.id.save:{if(students!=null){dao.save(students);Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();}else{Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show();}}break;case R.id.cancel:{Toast.makeText(this, "取消保存", Toast.LENGTH_SHORT).show();}break;}}private void addView(Student stu) {// TODO Auto-generated method stub//加载显示文件布局,建议放在外面,因为不必要每次都加在布局文件View view=LayoutInflater.from(this).inflate(R.layout.item, null);TextView show_name=(TextView) view.findViewById(R.id.show_name);TextView show_age=(TextView) view.findViewById(R.id.show_age);TextView show_sex=(TextView) view.findViewById(R.id.show_sex);//设置显示文本show_name.setText(stu.getName());show_age.setText(String.valueOf(stu.getAge()));show_sex.setText(stu.getSex());show.addView(view);}  }


   
   
布局效果图
   
   



更多相关文章

  1. 切换tab的时候recyclerview滑动到最底部
  2. android DTMFTwelveKeyDialer使用中的一个问题
  3. Android(安卓)Bugs——RecyclerView.Adapter java.lang.IllegalS
  4. Android(安卓)-- 距离感应器控制屏幕灭屏白屏
  5. Android(安卓)增量更新实例(Smart App Updates)
  6. listview绑定xml网络数据(android极简原创系列)
  7. xUtils3.3.x POST请求使用实例
  8. Android(安卓)通过网络图片路径查看图片实例详解
  9. Android(安卓)软键盘弹出时把布局顶上去,控件乱套解决方法

随机推荐

  1. Linux I/O Scheduler (调度器)
  2. 我从运维到运维开发的转变
  3. 衡量:DevOps 架构下的人工智能思维
  4. 曼城游学杂忆
  5. 基于容器和微服务的端到端持续交付流水线
  6. 如何使用旁白设置 Apple Watch?
  7. 6种Scrum工具来提高团队的生产力
  8. Linux系统内存使用率该怎么计算
  9. 什么是DevOps?微软架构师的回答来了
  10. Prometheus为何脱颖而出?