package cn.com.basic.face.util; import android.content.Context; import android.content.res.AssetManager; import cn.com.basic.face.model.CountryModel; import cn.com.basic.face.model.CountrysModel; import java.io.InputStream; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; /** * Created by Sinoe on 2017/2/28. */ public class CountryPresenter { protected String mCurrentCountrysWord; protected String mCurrentCountryName; protected String[] mCountryWordDatas; protected Map mCountryDatasMap = new HashMap<>(); private Context mContext; public CountryPresenter(Context mContext) { this.mContext = mContext; initCountrys(); } private void initCountrys() { List countrysModelList = null; AssetManager asset = mContext.getAssets(); try { InputStream input = asset.open("countrys.xml"); SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser parser = spf.newSAXParser(); XmlParserHandler handler = new XmlParserHandler(); parser.parse(input, handler); input.close(); countrysModelList = handler.getDataList(); if (countrysModelList != null && !countrysModelList.isEmpty()) { mCurrentCountrysWord = countrysModelList.get(0).getName(); List countryList = countrysModelList.get(0).getCountryModelList(); if (countryList != null && !countryList.isEmpty()) { mCurrentCountryName = countryList.get(0).getName(); } } mCountryWordDatas = new String[countrysModelList.size()]; for (int i = 0; i < countrysModelList.size(); i++) { mCountryWordDatas[i] = countrysModelList.get(i).getName(); List countryModelList = countrysModelList.get(i).getCountryModelList(); String[] CountryNames = new String[countryModelList.size()]; for (int j = 0; j < countryModelList.size(); j++) { CountryNames[j] = countryModelList.get(j).getName(); } mCountryDatasMap.put(countrysModelList.get(i).getName(), CountryNames); } } catch (Throwable e) { e.printStackTrace(); } } public String[] getCountryWordData() { if (mCountryWordDatas == null) { initCountrys(); } return mCountryWordDatas; } public HashMap> getCountryData() { HashMap> cityDataMap = new HashMap<>(); if (mCountryDatasMap == null) { initCountrys(); } for (int i = 0; i < mCountryDatasMap.size(); i++) { String[] cities = mCountryDatasMap.get(mCountryWordDatas[i]); if (cities == null) { cities = new String[]{""}; } cityDataMap.put(mCountryWordDatas[i], Arrays.asList(cities)); } return cityDataMap; } }