移动应用开发Android通讯录导入小工具

应用开发要求

这里写图片描述

系统运行效果

这里写图片描述

实现思路与设计

这里写图片描述

废话不多说,上代码

首先是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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值