怎么在Android中实现一个三级联动
发布时间:2020-12-16 14:07:31
来源:亿速云
阅读:122
作者:Leah
这篇文章给大家介绍怎么在Android中实现一个三级联动,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
1. 添加依赖//三级联动
implementation 'com.contrarywind:Android-PickerView:4.1.8'
// gosn解析
implementation 'com.google.code.gson:gson:2.8.5'
2.文件转换成json串工具类import android.content.Context;
import android.content.res.AssetManager;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* Created by dell on 2019/9/16.
*/
public class JsonFileReader {
public static String getJson(Context context, String fileName) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
AssetManager assetManager = context.getAssets();
InputStream inputStream = assetManager.open(fileName);
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
byte[] buffer = new byte[1024];
int len;
while ((len = bufferedInputStream.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
}
return baos.toString();
}
}
3.json转换成集合工具类import android.content.Context;
import com.google.gson.Gson;
import org.json.JSONArray;
import java.util.ArrayList;
/**
* Created by dell on 2019/9/16.
*/
public class LevelsListDate {
private ArrayList options1Items = new ArrayList<>();
private ArrayList> options2Items = new ArrayList<>();
private ArrayList>> options3Items = new ArrayList<>();
private Context context;
public LevelsListDate(Context context) {
this.context = context;
}
public ArrayList initJsonData(String path) {
String JsonData = JsonFileReader.getJson(context, path);
options1Items.clear();
options1Items = parseData(JsonData);//用Gson 转成实体
return options1Items;
}
public ArrayList> initJsonData1(String path) {
String JsonData = JsonFileReader.getJson(context, path);
ArrayList jsonBean = parseData(JsonData);//用Gson 转成实体
options2Items.clear();
for (int i = 0; i
ArrayList CityList = new ArrayList<>();//该省的城市列表(第二级)
ArrayList> Province_AreaList = new ArrayList<>();//该省的所有地区列表(第三极)
for (int c = 0; c
String CityName = jsonBean.get(i).getCity().get(c).getREGION_NAME();
CityList.add(CityName);//添加城市
ArrayList City_AreaList = new ArrayList<>();//该城市的所有地区列表
//如果无地区数据,建议添加空字符串,防止数据为null 导致三个选项长度不匹配造成崩溃
if (jsonBean.get(i).getCity().get(c).getRes() == null
|| jsonBean.get(i).getCity().get(c).getRes().size() == 0) {
City_AreaList.add("");
} else {
for (int d = 0; d
String AreaName = jsonBean.get(i).getCity().get(c).getRes().get(d).getREGION_NAME();
City_AreaList.add(AreaName);//添加该城市所有地区数据
}
}
Province_AreaList.add(City_AreaList);//添加该省所有地区数据
}
/**
* 添加城市数据
*/
options2Items.add(CityList);
}
return options2Items;
}
public ArrayList>> initJsonData2(String path) {
String JsonData = JsonFileReader.getJson(context, path);
ArrayList jsonBean = parseData(JsonData);//用Gson 转成实体
options3Items.clear();
for (int i = 0; i
ArrayList CityList = new ArrayList<>();//该省的城市列表(第二级)
ArrayList> Province_AreaList = new ArrayList<>();//该省的所有地区列表(第三极)
for (int c = 0; c
String CityName = jsonBean.get(i).getCity().get(c).getREGION_NAME();
CityList.add(CityName);//添加城市
ArrayList City_AreaList = new ArrayList<>();//该城市的所有地区列表
//如果无地区数据,建议添加空字符串,防止数据为null 导致三个选项长度不匹配造成崩溃
if (jsonBean.get(i).getCity().get(c).getRes() == null
|| jsonBean.get(i).getCity().get(c).getRes().size() == 0) {
City_AreaList.add("");
} else {
for (int d = 0; d
String AreaName = jsonBean.get(i).getCity().get(c).getRes().get(d).getREGION_NAME();
City_AreaList.add(AreaName);//添加该城市所有地区数据<