应用开发要求
系统运行效果
实现思路与设计
废话不多说,上代码
首先是MainActivity
package com.example.tsm.xmldemo;
import android.app.Dialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button search,button_openfile;
private ListView list;
private ArrayList<Person> persons;
//private SimpleAdapter mAdapter;
private int [] tImg = new int[]{R.mipmap.ic_launcher_round,R.mipmap.ic_launcher_round,R.mipmap.ic_launcher_round,R.mipmap.ic_launcher_round,R.mipmap.ic_launcher_round};
private String [] name = new String[10];
private String [] phoneNumber = new String[10];
private String [] temp = new String[3];
private String filepath = null;
static private int openfileDialogId = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setView();
}
private void setView(){
search = (Button) findViewById(R.id.search);
list = (ListView) findViewById(R.id.list);
button_openfile = (Button) findViewById(R.id.button_openfile);
search.setOnClickListener(this);
button_openfile.setOnClickListener(this);
}
private ArrayList<Person> readxmlForSAX() throws Exception {
//获取文件资源建立输入流对象
InputStream is = new FileInputStream(filepath);
//①创建XML解析处理器
SaxHelper ss = new SaxHelper();
//②得到SAX解析工厂
SAXParserFactory factory = SAXParserFactory.newInstance();
//③创建SAX解析器
SAXParser parser = factory.newSAXParser();
//④将xml解析处理器分配给解析器,对文档进行解析,将事件发送给处理器
parser.parse(is, ss);
is.close();
return ss.getPersons();
}
@Override
protected Dialog onCreateDialog(int id) {
if(id==openfileDialogId){
Map<String, Integer> images = new HashMap<String, Integer>();
// 下面几句设置各文件类型的图标, 需要你先把图标添加到资源文件夹
images.put(OpenFileDialog.sRoot, R.drawable.filedialog_root); // 根目录图标
images.put(OpenFileDialog.sParent, R.drawable.filedialog_folder_up); //返回上一层的图标
images.put(OpenFileDialog.sFolder, R.drawable.filedialog_folder); //文件夹图标
images.put("xml",R.drawable.filedialog_file); //文件图标
images.put("wav", R.drawable.filedialog_wavfile); //wav文件图标
images.put(OpenFileDialog.sEmpty, R.drawable.filedialog_root);
Dialog dialog = OpenFileDialog.createDialog(id, this, "打开文件", new CallbackBundle() {
@Override
public void callback(Bundle bundle) {
filepath = bundle.getString("path");
Toast.makeText(getApplicationContext(),"选择成功!",Toast.LENGTH_LONG).show();
//setTitle(filepath); // 把文件路径显示在标题上
}
},
".wav;.xml;",
images);
return dialog;
}
return null;
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.search:
// String path=getApplicationContext().getFilesDir().getAbsolutePath();
// Toast.makeText(getApplicationContext(),filepath+"&&"+path,Toast.LENGTH_LONG).show();
// //Log.i("XXXXQQQQ",filepath+"&&"+path);
//Log.i("xxx","执行了1");
try {
persons = readxmlForSAX();
//Log.i("xxx","执行了2");
} catch (Exception e) {
e.printStackTrace();
}
//mAdapter = new ArrayAdapter<Person>(MainActivity.this, R.layout.list_item, persons);
List<Map<String, Object>> listitem = new ArrayList<Map<String, Object>>();
//Log.i("xxx","执行了3"+persons.get(0).toString()+","+ persons.size());
for (int i=0;i< persons.size();i++){
temp = persons.get(i).toString().split(",");
name[i] = temp[0];
phoneNumber[i] = temp[1];
}
for (int i = 0; i < persons.size() ; i++){
Map<String,Object> showitem = new HashMap<String, Object>();
showit