文章目录
1、资源准备:
① 省-市-区/县 三级资源下载
② wheelView依赖模板下载
在资源②中,下载后,将其中的wheelview模块通过Import Module from Source导入自己的项目中。
2、实现效果

3、导入wheelview模块
3.1 问题与解决
3.1.1 问题1-插件找不到
问题:
在导入wheelview后,会出现找不到com.github.dcendents.android-maven的问题
解决:
在wheelview模块的build.gradle中将
apply plugin: ‘com.github.dcendents.android-maven’
修改为
apply plugin: 'maven-publish'
3.1.2 问题2-未定义内存空间namespace
在build.gradle的android {}中添加代码
namespace = "com.contrarywind.view"
3.2 添加依赖
在app的buid.gradle中添加
implementation(project(":wheelview"))
4、解析json文件
4.1 修改json文件
将下载的json资源文件存放在assets文件夹中,并修改json文件为DistrictCityJson.json,结构为
{
"data_version": "1.0.0",
"districts":
{
{
"北京市":{
"市辖区":["东城区" //为下载的资源文件,也可以不修改,那就需要将下方数据转换的数据结构修改一下
}
的形式。
4.2 转换json文件中数据
创建需要的数据结构,其中RegionData表示的是获取json的数据结构,可通过Gson().fromJson方法将json文件转为实体数据。
RegionResponse为后续方便使用的数据结构,层次结构,方便wheelView使用
data class RegionData(
val data_version: String,
val districts: Map<String, Map<String, List<String>>>
)
data class RegionResponse(
val data_version: String,
val districts: List<District>
)
data class District(
val name: String,
val level: Int, // 1:省/直辖市 2:市 3:区县
val districts: List<District> = emptyList()
)
object RegionDataParser {
// 方法1:直接解析为Map结构
fun parseRegionDataFromAssets(context: Context, fileName: String): RegionData {
return try {
val jsonString = context.assets.open(fileName)
.bufferedReader()
.use {
it.readText() }
Gson().fromJson(jsonString, RegionData::class.java)
} catch (e: IOException) {
throw RuntimeException("Could not read $fileName from assets", e)
}
}
//方法2:将原始数据转为层级的结构
fun parseStructuredRegionsFromAssets(context: Context, fileName: String): RegionResponse {
val originalList : RegionData = parseRegionDataFromAssets(context,fileName)
return RegionResponse(
data_version = originalList.data_version,
districts = originalList.districts.map

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



