全国省市区三级联动
PickerView
需要assets文件夹存放全国省市区json数据
MainActivity
public class MainActivity extends AppCompatActivity {
private OptionsPickerView<String> optionsPickerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
}
private List<String> provinceList = new ArrayList<>();//省
private List<List<String>> cityList = new ArrayList<>();//市
private List<List<List<String>>> areaList = new ArrayList<>();//区
//省市区三级联动
private void initOptionsPickerView() {
//异步读取json串
new Thread() {
@Override
public void run() {
super.run();
//读取数据
initData();
}
}.start();
optionsPickerView = new OptionsPickerBuilder(this, new OnOptionsSelectListener() {
@Override
public void onOptionsSelect(int options1, int options2, int options3, View v) {
}
}).setCancelText("取消").setSubmitText("确认").build();
optionsPickerView.setPicker(provinceList, cityList, areaList);
}
private void initData() {
StringBuilder builder = new StringBuilder();
AssetManager assets = getAssets();
try {
BufferedReader bf = new BufferedReader(new InputStreamReader(assets.open("province.json")));
String line;
while ((line = bf.readLine()) != null) {
builder.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
//json---->对象
List<JsonBean> jsonBeanList = new Gson().fromJson(builder.toString(), new TypeToken<List<JsonBean>>() {
}.getType());
builder.setLength(0);
//整理三个list
for (JsonBean bean :
jsonBeanList) {
provinceList.add(bean.getName());
List<String> citys = new ArrayList<>();
List<List<String>> areas = new ArrayList<>();
for (JsonBean.CityBean cityBean :
bean.getCity()) {
citys.add(cityBean.getName());
areas.add(cityBean.getArea());
}
cityList.add(citys);
areaList.add(areas);
}
runOnUiThread(new Runnable() {
@Override
public void run() {
initOptionsPickerView();
}
});
}
}