Skip to content

样式二(城市一级列表展示)

crazyandcoder edited this page Apr 19, 2018 · 8 revisions

该样式是列表展示所有的城市数据,大概有357个,每个城市数据包含的数据结构和其他样式返回的结果一致。使用方法如下:

预加载本地所有城市的数据

在自定义的Application中或者Activity中添加以下的代码,预先加载本地城市数据

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        /**
         * 预先加载一级列表显示 全国所有城市市的数据
         */     
        CityListLoader.getInstance().loadCityData(this); 
    }
}

以上代码可以在使用地址选择器之前配置,可以在Application中或者在Activity的onCreate方法中加载使用。

跳转到列表

Intent intent = new Intent(CitypickerListActivity.this, CityListSelectActivity.class);
startActivityForResult(intent, CityListSelectActivity.CITY_SELECT_RESULT_FRAG);

获取选择结果

我们使用的是startActivityForResult方法,所以需要在activity中覆盖系统方法,然后获取选择的结果。

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == CityListSelectActivity.CITY_SELECT_RESULT_FRAG) {
            if (resultCode == RESULT_OK) {
                if (data == null) {
                    return;
                }
                Bundle bundle = data.getExtras();
                
                CityInfoBean cityInfoBean = (CityInfoBean) bundle.getParcelable("cityinfo");
                
                if (null == cityInfoBean) {
                    return;
                }
                
                mResultTv.setText("城市: " + cityInfoBean.toString());
            }
        }
    }

数据结构如下

id  //城市code
name //城市名称
pinYin //城市拼音
gisGcj02Lat //高德坐标系-纬度
gisGcj02Lng //高德坐标系-经度
gisBd09Lat //百度坐标系-纬度
gisBd09Lng //百度坐标系-经度