Android开发地址选择省市县镇四级联动(仿京东地址选择)

先看效果:

SVID_20191215_173310_1

项目GitHub地址:https://github.com/YLY221/AddressProject

首先需要在build.gradle中添加以下三个依赖
 

    implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30'
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'com.android.support:design:28.0.0'

第一个依赖的作用是加强版的RecyclerView,它是GitHub上的开源项目,链接:https://github.com/CymChad/BaseRecyclerViewAdapterHelper/blob/master/README-cn.md

根据使用说明,还需要在外层build.gradle添加:

allprojects {
		repositories {
		...
		maven { 
                    url "https://jitpack.io" 
                }
	}
}

第二个是Gson解析库,需要对json格式数据进行解析,在这里我就不联网获取地址数据了,我直接在main目录下新建assets文件夹,然后把下面json文件复制到assets文件里面:(由于csdn没有json格式数据,所以你们需要在本地新建文件region.json然后把下面的数据复制到新建的文件里面,放到assets文件夹中)

[{"label":"\u6cf8\u897f\u53bf","value":532527000000000,"children":[{"label":"\u4e2d\u67a2\u9547","value":532527101000000,"children":[{"label":"\u80dc\u5229\u6751\u59d4\u4f1a","value":532527101007000,"children":[{"label":"\u674e\u5bb6\u6751","value":532527101007001},{"label":"\u80dc\u5229\u6751","value":532527101007002},{"label":"\u5efa\u8bbe\u6751","value":532527101007003},{"label":"\u897f\u8425\u6751","value":532527101007004}]},{"label":"\u65b0\u534e\u6751\u59d4\u4f1a","value":532527101008000,"children":[{"label":"\u65b0\u534e\u6751\u4e00\u7ec4","value":532527101008001},{"label":"\u65b0\u534e\u6751\u4e8c\u7ec4","value":532527101008002},{"label":"\u65b0\u534e\u6751\u4e09\u7ec4","value":532527101008003},{"label":"\u65b0\u534e\u6751\u56db\u7ec4","value":532527101008004}]},{"label":"\u6c11\u4e3b\u6751\u59d4\u4f1a","value":532527101009000,"children":[{"label":"\u4e1c\u5c0f\u7ec4","value":532527101009001},{"label":"\u897f\u5c0f\u7ec4","value":532527101009002},{"label":"\u6c11\u4e3b\u5c0f\u7ec4","value":532527101009003},{"label":"\u949f\u79c0\u5c0f\u7ec4","value":532527101009004},{"label":"\u5bcc\u5f3a\u5c0f\u7ec4","value":532527101009005},{"label":"\u5bcc\u4e91\u5c0f\u7ec4","value":532527101009006}]},{"label":"\u74e6\u7a91\u6751\u59d4\u4f1a","value":532527101010000,"children":[{"label":"\u963f\u8def\u53d1\u6751","value":532527101010001},{"label":"\u74e6\u7a91\u6751","value":532527101010002},{"label":"\u6cf8\u6e90\u6d1e\u6751","value":532527101010003}]},{"label":"\u6843\u7b11\u6751\u59d4\u4f1a","value":532527101011000,"children":[{"label":"\u4e0a\u6751","value":532527101011001},{"label":"\u4e0b\u6751","value":532527101011002},{"label":"\u738b\u5bb6\u6751","value":532527101011003},{"label":"\u5c0f\u77f3\u6865","value":532527101011004},{"label":"\u5c0f\u6751","value":532527101011005}]},{"label":"\u9f99\u7538\u6751\u59d4\u4f1a","value":532527101012000,"children":[{"label":"\u5927\u9f99\u7538","value":532527101012001},{"label":"\u5c0f\u9f99\u7538","value":532527101012002},{"label":"\u6c5f\u5934\u6751","value":532527101012003},{"label":"\u5bfa\u95e8\u524d","value":532527101012004},{"label":"\u575d\u5fc3","value":532527101012005}]},{"label":"\u77f3\u6d1e\u6751\u59d4\u4f1a","value":532527101013000,"children":[{"label":"\u70df\u5149\u54e8\u6751","value":532527101013001},{"label":"\u77f3\u6d1e\u6751","value":532527101013002},{"label":"\u683c\u6765\u6cb3\u6751","value":532527101013003}]},{"label":"\u65b0\u5be8\u6751\u59d4\u4f1a","value":532527101014000,"children":[{"label":"\u9ec4\u8349\u6d32","value":532527101014001},{"label":"\u65b0\u5be8\u5b50","value":532527101014002},{"label":"\u9646\u826f\u5be8","value":532527101014003},{"label":"\u795e\u6811\u5761","value":532527101014004}]},{"label":"\u9038\u5703\u6751\u59d4\u4f1a","value":532527101015000,"children":[{"label":"\u5927\u9038\u5703","value":532527101015001},{"label":"\u5c0f\u9038\u5703","value":532527101015002},{"label":"\u9c81\u514b","value":532527101015003},{"label":"\u6c34\u7b90\u6751","value":532527101015004},{"label":"\u9a6c\u978d\u5c71\u6751","value":532527101015005},{"label":"\u5c16\u5c71\u6751","value":532527101015006}]},{"label":"\u7cef\u5e03\u6751\u59d4\u4f1a","value":532527101207000,"children":[{"label":"\u7cef\u5e03\u6751","value":532527101207001},{"label":"\u8d44\u820d\u6751","value":532527101207002},{"label":"\u5927\u5174\u5be8\u6751","value":532527101207003},{"label":"\u5c0f\u5174\u5be8\u6751","value":532527101207004}]},{"label":"\u897f\u534e\u6751\u59d4\u4f1a","value":532527101208000,"children":[{"label":"\u4e01\u5408\u6751","value":532527101208001},{"label":"\u897f\u534e\u5bfa","value":532527101208002},{"label":"\u7f8a\u683c\u9ed1","value":532527101208003},{"label":"\u8def\u7eb3\u79df","value":532527101208004},{"label":"\u843d\u6c34\u6d1e","value":532527101208005}]},{"label":"\u7acb\u5c97\u6751\u59d4\u4f1a","value":532527101210000,"children":[{"label":"\u603b\u6751\u6751","value":532527101210001},{"label":"\u5927\u7acb\u5c97\u6751","value":532527101210002},{"label":"\u5c0f\u7acb\u5c97\u6751","value":532527101210003}]},{"label":"\u963f\u52d2\u6751\u59d4\u4f1a","value":532527101211000,"children":[{"label":"\u963f\u52d2\u6751","value":532527101211001},{"label":"\u4e09\u5bb6\u6751","value":532527101211002},{"label":"\u5409\u53cc\u6751","value":532527101211003}]},{"label":"\u56fa\u767d\u6751\u59d4\u4f1a","value":532527101214000,"children":[{"label":"\u56fa\u767d\u6751","value":532527101214001},{"label":"\u53cc\u9f99\u6751","value":532527101214002}]},{"label":"\u5927\u5174\u6751\u59d4\u4f1a","value":532527101215000,"children":[{"label":"\u5927\u5174\u5821","value":532527101215001},{"label":"\u5c0f\u5174\u5821","value":532527101215002},{"label":"\u7eb3\u5821\u6751","value":532527101215003},{"label":"\u5938\u897f\u6751","value":532527101215004}]},{"label":"\u6328\u6765\u6751\u59d4\u4f1a","value":532527101216000,"children":[{"label":"\u5927\u6328\u6765\u6751","value":532527101216001},{"label":"\u4e2d\u6328\u6765\u6751","value":532527101216002},{"label":"\u5c0f\u6328\u6765\u6751","value":532527101216003},{"label":"\u91cc\u6bd4\u6751","value":532527101216004},{"label":"\u6728\u5f97\u6751","value":532527101216005},{"label":"\u957f\u8001\u7530\u6751","value":532527101216006},{"label":"\u77e5\u5e9c\u5858\u6751","value":532527101216007}]},{"label":"\u963f\u5e73\u6751\u59d4\u4f1a","value":532527101217000,"children":[{"label":"\u5c0f\u96e8\u9f99","value":532527101217001},{"label":"\u5927\u96e8\u9f99","value":532527101217002},{"label":"\u963f\u5e73\u6751","value":532527101217003},{"label":"\u96e8\u54a9\u6751","value":532527101217004}]},{"label":"\u65e2\u6bd4\u6751\u59d4\u4f1a","value":532527101218000,"children":[{"label":"\u65e2\u6bd4\u79df","value":532527101218001},{"label":"\u65b0\u5be8\u6751","value":532527101218002},{"label":"\u8001\u5be8\u6751","value":532527101218003},{"label":"\u4e0a\u65b0\u6c11\u6751","value":532527101218004},{"label":"\u4e0b\u65b0\u6c11\u6751","value":532527101218005},{"label":"\u5927\u96e8\u6742\u6751","value":532527101218006},{"label":"\u5c0f\u96e8\u6742\u6751","value":532527101218007},{"label":"\u6c49\u6ce5\u6c9f\u6751","value":532527101218008},{"label":"\u767d\u6ce5\u5761\u6751","value":532527101218009},{"label":"\u7ea2\u77f3\u5ca9\u6751","value":532527101218010},{"label":"\u7ea2\u83b2\u6751\u6751","value":532527101218011}]}]},{"label":"\u91d1\u9a6c\u9547","value":532527102000000,"children":[{"label":"\u7235\u518c\u6751\u59d4\u4f1a","value":532527102201000,"children":[{"label":"\u7b2c\u4e00\u6751","value":532527102201001},{"label":"\u7b2c\u4e8c\u6751","value":532527102201002},{"label":"\u7b2c\u4e09\u6751","value":532527102201003},{"label":"\u7b2c\u56db\u6751","value":532527102201004}]},{"label":"\u65b0\u5b89\u6751\u59d4\u4f1a","value":532527102202000,"children":[{"label":"\u65b0\u82d7\u6751\u6751","value":532527102202001},{"label":"\u4e95\u4e0d\u5e72\u6751","value":532527102202002}]},{"label":"\u5c71\u53e3\u6751\u59d4\u4f1a","value":532527102203000,"children":[{"label":"\u6240\u65b0\u6751","value":532527102203001},{"label":"\u6240\u5f97\u6751","value":532527102203002},{"label":"\u5c71\u53e3\u6751","value":532527102203003}]},{"label":"\u592a\u5e73\u6751\u59d4\u4f1a","value":532527102204000,"children":[{"label":"\u52a0\u4e50\u6751","value":532527102204001},{"label":"\u592a\u5e73\u6751","value":532527102204002},{"label":"\u5927\u91d1\u9a6c\u6751","value":532527102204003},{"label":"\u5c0f\u91d1\u9a6c\u6751","value":532527102204004}]},{"label":"\u65b0\u575d\u6751\u59d4\u4f1a","value":532527102205000,"children":[{"label":"\u65b0\u575d\u6751","value":532527102205001},{"label":"\u767d\u77f3\u5934\u6751","value":532527102205002},{"label":"\u5e03\u767d\u6751","value":532527102205003},{"label":"\u767d\u9732\u6751","value":532527102205004}]},{"label":"\u96e8\u9f99\u6751\u59d4\u4f1a","value":532527102206000,"children":[{"label":"\u96e8\u9f99\u6751","value":532527102206001},{"label":"\u5c0f\u9f99\u6f6d\u6751","value":532527102206002},{"label":"\u5c0f\u575d\u6cb3\u6751","value":532527102206003}]},{"label":"\u77f3\u7f38\u51b2\u6751\u59d4\u4f1a","value":532527102207000,"children":[{"label":"\u77f3\u7f38\u51b2","value":532527102207001},{"label":"\u5409\u6446\u5927\u5be8","value":532527102207002},{"label":"\u5409\u6446\u5c0f\u5be8","value":532527102207003},{"label":"\u65b0\u8857\u5b50","value":532527102207004},{"label":"\u65b0\u5e84\u79d1","value":532527102207005},{"label":"\u6c34\u8349\u6d3c","value":532527102207006},{"label":"\u5c0f\u6838\u6843","value":532527102207007},{"label":"\u78a7\u6843\u6751","value":532527102207008},{"label":"\u5927\u6838\u6843\u6751","value":532527102207009}]}]},{"label":"\u65e7\u57ce\u9547","value":532527104000000,"children":[{"label":"\u65e7\u57ce\u6751\u59d4\u4f1a","value":532527104201000,"children":[{"label":"\u65e7\u57ce","value":532527104201001},{"label":"\u74e6\u820d","value":532527104201002},{"label":"\u8def\u6eaa\u767d","value":532527104201003},{"label":"\u5927\u65e7\u9f99","value":532527104201004}]},{"label":"\u9752\u79be\u6751\u59d4\u4f1a","value":532527104202000,"children":[{"label":"\u9752\u79be","value":532527104202001},{"label":"\u5927\u77e3\u767d","value":532527104202002},{"label":"\u5927\u767d\u4e50","value":532527104202003},{"label":"\u5c0f\u767d\u4e50","value":532527104202004}]},{"label":"\u9ed1\u820d\u6751\u59d4\u4f1a","value":532527104203000,"children":[{"label":"\u9ed1\u820d","value":532527104203001},{"label":"\u6e05\u5858\u5b50","value":532527104203002}]},{"label":"\u7763\u5e03\u5e9c\u6751\u59d4\u4f1a","value":532527104204000,"children":[{"label":"\u9976\u5bb6\u5be8","value":532527104204001},{"label":"\u8d75\u5bb6\u5be8","value":532527104204002},{"label":"\u5927\u5be8","value":532527104204003},{"label":"\u5c0f\u661f\u5be8","value":532527104204004},{"label":"\u5b50\u4ea4","value":532527104204005},{"label":"\u65b0\u54e8","value":532527104204006}]},{"label":"\u79e7\u7530\u575d\u6751\u59d4\u4f1a","value":532527104205000,"children":[{"label":"\u5be8\u5b50\u5c71","value":532527104205001},{"label":"\u79e7\u7530\u575d","value":532527104205002},{"label":"\u8def\u6d12","value":532527104205003},{"label":"\u5c0f\u65e7\u9f99","value":532527104205004},{"label":"\u5c0f\u77e3\u767d","value":532527104205005},{"label":"\u74e6\u69fd\u5c71","value":532527104205006},{"label":"\u8005\u767d","value":532527104205007}]},{"label":"\u5f2f\u8170\u6811\u6751\u59d4\u4f1a","value":532527104206000,"children":[{"label":"\u5f2f\u8170\u6811","value":532527104206001},{"label":"\u72ec\u5bb6\u6751","value":532527104206002},{"label":"\u96c0\u68a8\u6811","value":532527104206003}]},{"label":"\u677e\u9e64\u6751\u59d4\u4f1a","value":532527104207000,"children":[{"label":"\u677e\u9e64\u6751","value":532527104207001},{"label":"\u4e09\u5bb6\u6751","value":532527104207002},{"label":"\u4e50\u4e1a\u6751","value":532527104207003}]},{"label":"\u4e09\u6cb3\u6751\u59d4\u4f1a","value":532527104208000,"children":[{"label":"\u4e09\u6cb3\u6751","value":532527104208001},{"label":"\u51b2\u5b50\u6751","value":532527104208002},{"label":"\u575d\u5934\u8d77\u6751","value":532527104208003}]},{"label":"\u6728\u9f99\u6751\u59d4\u4f1a","value":532527104209000,"children":[{"label":"\u65b0\u5be8\u5b50","value":532527104209001},{"label":"\u8001\u575d\u6e7e","value":532527104209002},{"label":"\u7ea2\u7530","value":532527104209003},{"label":"\u5c0f\u6728\u9f99","value":532527104209004},{"label":"\u4e2d\u6446","value":532527104209005}]},{"label":"\u77ff\u5382\u6751\u59d4\u4f1a","value":532527104210000,"children":[{"label":"\u77ff\u5382\u6751","value":532527104210001},{"label":"\u9a6c\u69fd\u51b2\u4e2d\u5be8","value":532527104210002},{"label":"\u9a6c\u69fd\u51b2\u4e0a\u5be8","value":532527104210003},{"label":"\u9a6c\u69fd\u51b2\u4e0b\u5be8","value":532527104210004},{"label":"\u6e05\u6c34\u6c9f\u6751","value":532527104210005}]},{"label":"\u677f\u6865\u6751\u59d4\u4f1a","value":532527104211000,"children":[{"label":"\u9f99\u6f6d\u51b2","value":532527104211001},{"label":"\u9c81\u767d","value":532527104211002},{"label":"\u963f\u62c9\u5761","value":532527104211003},{"label":"\u963f\u5b50\u7530","value":532527104211004},{"label":"\u677f\u6865\u5927\u5be8","value":532527104211005},{"label":"\u677f\u6865\u5c0f\u5be8","value":532527104211006},{"label":"\u6cb3\u6c11\u6751","value":532527104211007}]}]},{"label":"\u5348\u8857\u94fa\u9547","value":532527106000000,"children":[{"label":"\u6cb3\u5916\u6751\u59d4\u4f1a","value":532527106201000,"children":[{"label":"\u4e0a\u9a6c\u6751","value":532527106201001},{"label":"\u4e60\u7532\u6751","value":532527106201002},{"label":"\u6cb3\u5916\u6751","value":532527106201003},{"label":"\u5348\u8857\u94fa\u6751","value":532527106201004},{"label":"\u8fbe\u5de6\u6751","value":532527106201005},{"label":"\u5927\u6817\u6811\u6751","value":532527106201006},{"label":"\u65b9\u5143\u54e8\u6751","value":532527106201007},{"label":"\u963f\u8328\u9f99\u6751","value":532527106201008},{"label":"\u5c0f\u6cb3\u5e95\u6751","value":532527106201009}]},{"label":"\u5927\u6c34\u5858\u6751\u59d4\u4f1a","value":532527106202000,"children":[{"label":"\u5409\u5730\u6751","value":532527106202001},{"label":"\u8001\u8425\u6751","value":532527106202002},{"label":"\u65b0\u8425\u6751","value":532527106202003},{"label":"\u8def\u53e3\u6751","value":532527106202004},{"label":"\u56e2\u5c71\u6751","value":532527106202005},{"label":"\u963f\u4fdd\u6751","value":532527106202006},{"label":"\u98de\u5348\u6751","value":532527106202007},{"label":"\u65b0\u5e84\u6751","value":532527106202008},{"label":"\u9f99\u6f6d\u6cb3\u6751","value":532527106202009}]},{"label":"\u96e8\u6d12\u6751\u59d4\u4f1a","value":532527106203000,"children":[{"label":"\u96e8\u6d12\u6751","value":532527106203001},{"label":"\u5927\u8db3\u5f55\u6751","value":532527106203002},{"label":"\u5c0f\u8db3\u5f55\u6751","value":532527106203003},{"label":"\u65b0\u5be8\u6751","value":532527106203004},{"label":"\u8328\u51f9\u6751","value":532527106203005},{"label":"\u5927\u5858\u6751","value":532527106203006},{"label":"\u6838\u6843\u51f9","value":532527106203007},{"label":"\u96c5\u4e50\u6751","value":532527106203008}]},{"label":"\u666e\u6cfd\u6751\u59d4\u4f1a","value":532527106204000,"children":[{"label":"\u767e\u83ca\u6751","value":532527106204001},{"label":"\u666e\u6cfd\u6751","value":532527106204002},{"label":"\u83f1\u5858\u6751","value":532527106204003},{"label":"\u7ea2\u5761\u6751","value":532527106204004},{"label":"\u4e45\u6052\u6751","value":532527106204005},{"label":"\u4e0a\u5be8\u6751","value":532527106204006},{"label":"\u72ec\u5584\u6751","value":532527106204007},{"label":"\u62a4\u56fd\u6751","value":532527106204008}]},{"label":"\u7eff\u5ce8\u6751\u59d4\u4f1a","value":532527106205000,"children":[{"label":"\u7eff\u5ce8\u6751","value":532527106205001},{"label":"\u4e0a\u8def\u533a\u6751","value":532527106205002},{"label":"\u4e0b\u8def\u533a\u6751","value":532527106205003},{"label":"\u8001\u571f\u5730\u6751","value":532527106205004},{"label":"\u5927\u4e60\u9f99\u6751","value":532527106205005},{"label":"\u5c0f\u4e60\u9f99\u6751","value":532527106205006},{"label":"\u78e8\u5c71\u6751","value":532527106205007},{"label":"\u9f99\u6f6d\u6751","value":532527106205008},{"label":"\u53d6\u5c3c\u9ed1\u65b0\u5be8\u6751","value":532527106205009},{"label":"\u53d6\u5c3c\u9ed1\u8001\u5be8\u6751","value":532527106205010}]},{"label":"\u55b7\u6cc9\u6751\u59d4\u4f1a","value":532527106206000,"children":[{"label":"\u55b7\u6cc9\u5927\u5be8","value":532527106206001},{"label":"\u55b7\u6cc9\u5c0f\u5be8","value":532527106206002},{"label":"\u5c16\u5c71\u5927\u5be8","value":532527106206003},{"label":"\u5c16\u5c71\u5c0f\u5be8","value":532527106206004},{"label":"\u81ea\u8db3\u6751","value":532527106206005},{"label":"\u8eb2\u725b\u5c71\u6751","value":532527106206006},{"label":"\u6cc9\u4e0a\u6751","value":532527106206007}]},{"label":"\u679c\u5409\u6751\u59d4\u4f1a","value":532527106207000,"children":[{"label":"\u679c\u5409\u6751","value":532527106207001},{"label":"\u5c0f\u820d\u7cef\u6751","value":532527106207002},{"label":"\u5927\u820d\u7cef\u6751","value":532527106207003},{"label":"\u8349\u6d77\u5b50\u6751","value":532527106207004},{"label":"\u8fc7\u8def\u7530\u6751","value":532527106207005},{"label":"\u5377\u6d1e\u95e8\u6751","value":532527106207006},{"label":"\u6587\u660e\u6751","value":532527106207007},{"label":"\u79e7\u8349\u5761\u6751","value":532527106207008},{"label":"\u5c16\u5761\u6751","value":532527106207009},{"label":"\u6d77\u53e3\u6751","value":532527106207010}]},{"label":"\u5c71\u6797\u6751\u59d4\u4f1a","value":532527106208000,"children":[{"label":"\u5c71\u6797\u6751","value":532527106208001},{"label":"\u62d6\u89c1\u6751","value":532527106208002},{"label":"\u575d\u4e0a\u6751","value":532527106208003},{"label":"\u6c34\u79e7\u7530\u6751","value":532527106208004},{"label":"\u6768\u67f3\u575d\u6751","value":532527106208005},{"label":"\u8273\u8272\u5761\u6751","value":532527106208006}]},{"label":"\u51e4\u5348\u6751\u59d4\u4f1a","value":532527106209000,"children":[{"label":"\u51e4\u5348\u6751","value":532527106209001},{"label":"\u572d\u843d\u54e8\u6751","value":532527106209002},{"label":"\u5927\u5ce8\u6885\u6751","value":532527106209003},{"label":"\u5c0f\u5ce8\u6885\u6751","value":532527106209004}]},{"label":"\u6c34\u5858\u6751\u59d4\u4f1a","value":532527106210000,"children":[{"label":"\u6c34\u5858\u6751","value":532527106210001},{"label":"\u963f\u53e4\u5757\u65b0\u5be8","value":532527106210002},{"label":"\u963f\u53e4\u5757\u8001\u5be8","value":532527106210003},{"label":"\u9ebb\u5b50\u54e8\u6751","value":532527106210004},{"label":"\u4e09\u68f5\u6811\u6751","value":532527106210005},{"label":"\u7cef\u8863\u6751","value":532527106210006},{"label":"\u77f3\u78d9\u5b50\u6751","value":532527106210007},{"label":"\u5c0f\u6cb3\u8fb9\u6751","value":532527106210008}]},{"label":"\u6797\u6811\u6751\u59d4\u4f1a","value":532527106211000,"children":[{"label":"\u8001\u677f\u7530\u6751","value":532527106211001},{"label":"\u6797\u6811\u6751","value":532527106211002},{"label":"\u5c0f\u7b3c\u6865\u6751","value":532527106211003},{"label":"\u5927\u7b3c\u6865\u6751","value":532527106211004},{"label":"\u4e09\u9053\u7b90\u6751","value":532527106211005},{"label":"\u5927\u5e73\u6ee9\u6751","value":532527106211006}]}]},{"label":"\u767d\u6c34\u9547","value":532527107000000,"children":[{"label":"\u9ed1\u9f99\u6751\u59d4\u4f1a","value":532527107201000,"children":[{"label":"\u9ed1\u9f99","value":532527107201001},{"label":"\u7af9\u6eaa","value":532527107201002},{"label":"\u5c0f\u5b5f\u6cfd","value":532527107201003},{"label":"\u5c0f\u4e94\u961f","value":532527107201004},{"label":"\u5927\u5174\u5b89","value":532527107201005},{"label":"\u5c0f\u5174\u5b89","value":532527107201006},{"label":"\u5927\u5b5f\u6cfd","value":532527107201007},{"label":"\u5927\u8863","value":532527107201008}]},{"label":"\u6843\u56ed\u6751\u59d4\u4f1a","value":532527107202000,"children":[{"label":"\u536b\u6c11","value":532527107202001},{"label":"\u6728\u65e7","value":532527107202002},{"label":"\u5927\u534e\u897f","value":532527107202003},{"label":"\u5c0f\u534e\u897f","value":532527107202004},{"label":"\u6843\u56ed","value":532527107202005}]},{"label":"\u7ea2\u674f\u6751\u59d4\u4f1a","value":532527107203000,"children":[{"label":"\u5927\u7ea2\u674f","value":532527107203001},{"label":"\u5c0f\u7ea2\u674f","value":532527107203002},{"label":"\u53ef\u4fdd","value":532527107203003},{"label":"\u6e14\u529b","value":532527107203004}]},{"label":"\u5de8\u6728\u6751\u59d4\u4f1a","value":532527107204000,"children":[{"label":"\u5de8\u6728","value":532527107204001},{"label":"\u677e\u6811","value":532527107204002},{"label":"\u6cb3\u843d","value":532527107204003},{"label":"\u6728\u94ce","value":532527107204004}]},{"label":"\u76ca\u8c37\u6751\u59d4\u4f1a","value":532527107205000,"children":[{"label":"\u76ca\u8c37","value":532527107205001},{"label":"\u5c71\u767d","value":532527107205002}]},{"label":"\u5584\u5bfc\u6751\u59d4\u4f1a","value":532527107206000,"children":[{"label":"\u5584\u5bfc","value":532527107206001},{"label":"\u897f\u79df\u5927\u5be8","value":532527107206002},{"label":"\u897f\u79df\u5c0f\u5be8","value":532527107206003},{"label":"\u5e73\u5c71","value":532527107206004},{"label":"\u6cd5\u571f","value":532527107206005}]},{"label":"\u65e2\u5eb6\u6751\u59d4\u4f1a","value":532527107207000,"children":[{"label":"\u65e2\u5eb6","value":532527107207001},{"label":"\u543e\u4e43\u767d","value":532527107207002},{"label":"\u5c71\u8863","value":532527107207003},{"label":"\u9f99\u6f6d","value":532527107207004},{"label":"\u543e\u8005","value":532527107207005}]},{"label":"\u65e0\u6d6a\u6751\u59d4\u4f1a","value":532527107208000,"children":[{"label":"\u5927\u65e0\u6d6a","value":532527107208001},{"label":"\u5c0f\u65e0\u6d6a","value":532527107208002},{"label":"\u5229\u6c11","value":532527107208003},{"label":"\u81f4\u7965","value":532527107208004}]},{"label":"\u5c71\u9ed1\u6751\u59d4\u4f1a","value":532527107209000,"children":[{"label":"\u5316\u4e50","value":532527107209001},{"label":"\u5927\u6811","value":532527107209002},{"label":"\u6c34\u4e95","value":532527107209003},{"label":"\u5c71\u9ed1","value":532527107209004},{"label":"\u5fb7\u6751","value":532527107209005}]},{"label":"\u5e73\u7530\u6751\u59d4\u4f1a","value":532527107210000,"children":[{"label":"\u6817\u6811","value":532527107210001},{"label":"\u5c0f\u6cb3","value":532527107210002},{"label":"\u6cd5\u52d2","value":532527107210003},{"label":"\u6545\u9647","value":532527107210004},{"label":"\u957f\u677f\u7530","value":532527107210005},{"label":"\u5927\u5be8","value":532527107210006},{"label":"\u5e73\u7530","value":532527107210007},{"label":"\u6cb3\u5174","value":532527107210008},{"label":"\u8001\u5be8","value":532527107210009},{"label":"\u5e73\u5174","value":532527107210010}]},{"label":"\u679c\u8863\u6751\u59d4\u4f1a","value":532527107211000,"children":[{"label":"\u6240\u767d","value":532527107211001},{"label":"\u7ea2\u77f3\u5ca9","value":532527107211002},{"label":"\u9ed1\u5761","value":532527107211003},{"label":"\u4e0a\u679c\u8863","value":532527107211004},{"label":"\u4e0b\u679c\u8863","value":532527107211005},{"label":"\u5e72\u6ce5\u5858","value":532527107211006},{"label":"\u591a\u8863\u6811","value":532527107211007},{"label":"\u7eff\u82b1","value":532527107211008},{"label":"\u8def\u8863","value":532527107211009}]},{"label":"\u76f4\u9091\u6751\u59d4\u4f1a","value":532527107212000,"children":[{"label":"\u5927\u76f4\u9091","value":532527107212001},{"label":"\u5c0f\u76f4\u9091","value":532527107212002},{"label":"\u9ed1\u5c71","value":532527107212003},{"label":"\u54e8\u7530","value":532527107212004},{"label":"\u5c0f\u6c34\u5858","value":532527107212005},{"label":"\u5927\u5c71","value":532527107212006},{"label":"\u767d\u9e64","value":532527107212007}]}]},{"label":"\u5411\u9633\u4e61","value":532527201000000,"children":[{"label":"\u65e7\u5be8\u6751\u59d4\u4f1a","value":532527201201000,"children":[{"label":"\u5b89\u8feb\u8feb","value":532527201201001},{"label":"\u65e7\u5be8","value":532527201201002},{"label":"\u767d\u6ce5\u5858","value":532527201201003},{"label":"\u767d\u77f3\u5ca9","value":532527201201004},{"label":"\u8def\u65b0\u6751","value":532527201201005},{"label":"\u5927\u6cb3","value":532527201201006},{"label":"\u4ed3\u84b2\u5802","value":532527201201007},{"label":"\u5ca9\u5cf0\u6d1e","value":532527201201008},{"label":"\u963f\u77e3","value":532527201201009}]},{"label":"\u8db3\u9a6c\u6751\u59d4\u4f1a","value":532527201202000,"children":[{"label":"\u7a84\u4e2b\u53e3","value":532527201202001},{"label":"\u5c0f\u6a2a\u7b90","value":532527201202002},{"label":"\u5f88\u574e","value":532527201202003},{"label":"\u5927\u8db3\u9a6c","value":532527201202004},{"label":"\u5927\u6865","value":532527201202005},{"label":"\u5c0f\u8db3\u9a6c","value":532527201202006},{"label":"\u4e2d\u516d","value":532527201202007},{"label":"\u6e29\u9971","value":532527201202008}]},{"label":"\u6cd5\u571f\u6751\u59d4\u4f1a","value":532527201203000,"children":[{"label":"\u65b0\u5e84\u79d1","value":532527201203001},{"label":"\u65e2\u77e3\u574e","value":532527201203002},{"label":"\u6cd5\u571f","value":532527201203003},{"label":"\u62d6\u843d","value":532527201203004},{"label":"\u767d\u6ce5\u4e95","value":532527201203005},{"label":"\u6728\u8863","value":532527201203006},{"label":"\u6728\u5854","value":532527201203007}]},{"label":"\u52fa\u5e03\u767d\u6751\u59d4\u4f1a","value":532527201204000,"children":[{"label":"\u52fa\u5e03\u767d\u4e0a\u5be8","value":532527201204001},{"label":"\u5858\u623f","value":532527201204002},{"label":"\u65b0\u5e84\u79d1","value":532527201204003},{"label":"\u6768\u5bb6\u5be8","value":532527201204004},{"label":"\u5927\u77f3\u76c6","value":532527201204005},{"label":"\u963f\u77e3\u574e","value":532527201204006},{"label":"\u9ec4\u680e\u6811","value":532527201204007},{"label":"\u8001\u8857\u5b50","value":532527201204008},{"label":"\u5f97\u51b2\u4e0a\u5be8","value":532527201204009},{"label":"\u52fa\u5e03\u767d\u6751","value":532527201204010}]},{"label":"\u6b79\u9c81\u6751\u59d4\u4f1a","value":532527201205000,"children":[{"label":"\u5c0f\u5353\u522b","value":532527201205001},{"label":"\u5927\u5353\u522b","value":532527201205002},{"label":"\u5377\u6d1e\u95e8","value":532527201205003},{"label":"\u6b79\u9c81\u9ebb\u5858\u5be8","value":532527201205004},{"label":"\u6885\u5b50\u7b90","value":532527201205005},{"label":"\u6b79\u9c81\u65b0\u5be8","value":532527201205006},{"label":"\u6b79\u9c81\u8001\u5be8","value":532527201205007},{"label":"\u5927\u6b79\u9c81","value":532527201205008}]},{"label":"\u963f\u76c8\u91cc\u6751\u59d4\u4f1a","value":532527201206000,"children":[{"label":"\u4e09\u5bb6\u6751","value":532527201206001},{"label":"\u5e03\u79df","value":532527201206002},{"label":"\u72ec\u5bb6","value":532527201206003},{"label":"\u65b0\u5be8","value":532527201206004},{"label":"\u6240\u897f\u683c","value":532527201206005},{"label":"\u963f\u76c8\u91cc","value":532527201206006},{"label":"\u63e1\u6d4b","value":532527201206007}]},{"label":"\u4e60\u5ce8\u6751\u59d4\u4f1a","value":532527201207000,"children":[{"label":"\u4e60\u5ce8\u6751","value":532527201207001},{"label":"\u534e\u56fd\u6751","value":532527201207002}]},{"label":"\u6c99\u9a6c\u6751\u59d4\u4f1a","value":532527201208000,"children":[{"label":"\u5c0f\u6728\u8863","value":532527201208001},{"label":"\u5c0f\u5f97\u4e50\u4e0b\u5be8","value":532527201208002},{"label":"\u5c0f\u5f97\u4e50\u4e0a\u5be8","value":532527201208003},{"label":"\u65b0\u5be8","value":532527201208004},{"label":"\u5927\u6c99\u9a6c","value":532527201208005},{"label":"\u5927\u5f97\u4e50","value":532527201208006},{"label":"\u5c71\u8272","value":532527201208007},{"label":"\u6ce5\u58a8\u52d2","value":532527201208008},{"label":"\u6240\u6885\u843d","value":532527201208009},{"label":"\u9c81\u9ed1","value":532527201208010},{"label":"\u5c0f\u6c99\u9a6c","value":532527201208011}]}]},{"label":"\u4e09\u5858\u4e61","value":532527202000000,"children":[{"label":"\u9686\u5fb7\u6751\u59d4\u4f1a","value":532527202201000,"children":[{"label":"\u67f4\u6751","value":532527202201001},{"label":"\u9686\u5fb7","value":532527202201002},{"label":"\u5927\u4e8c\u5858","value":532527202201003},{"label":"\u5c0f\u4e8c\u5858","value":532527202201004},{"label":"\u65e0\u5ea6\u5761","value":532527202201005},{"label":"\u5c0f\u9ed1\u7b90","value":532527202201006}]},{"label":"\u674e\u5b50\u7b90\u6751\u59d4\u4f1a","value":532527202202000,"children":[{"label":"\u5c0f\u963f\u68da","value":532527202202001},{"label":"\u674e\u5b50\u7b90","value":532527202202002},{"label":"\u963f\u6d1e\u6751","value":532527202202003},{"label":"\u5468\u4f9d\u6751","value":532527202202004},{"label":"\u69d0\u82b1\u6811","value":532527202202005},{"label":"\u963f\u6c38\u5409","value":532527202202006},{"label":"\u5927\u963f\u68da","value":532527202202007},{"label":"\u652f\u9505\u5c71","value":532527202202008}]},{"label":"\u7b90\u95e8\u6751\u59d4\u4f1a","value":532527202203000,"children":[{"label":"\u7b90\u95e8","value":532527202203001},{"label":"\u5927\u6e7e\u534a\u5b54","value":532527202203002},{"label":"\u5c0f\u6e7e\u534a\u5b54","value":532527202203003},{"label":"\u70c2\u6ce5\u7b90","value":532527202203004},{"label":"\u6bd5\u5757","value":532527202203005},{"label":"\u83ca\u7579","value":532527202203006}]},{"label":"\u963f\u5b9a\u6751\u59d4\u4f1a","value":532527202204000,"children":[{"label":"\u5927\u963f\u5b9a","value":532527202204001},{"label":"\u5c0f\u963f\u5b9a","value":532527202204002},{"label":"\u5927\u6c34\u4e95","value":532527202204003}]},{"label":"\u8fde\u57ce\u6751\u59d4\u4f1a","value":532527202205000,"children":[{"label":"\u8fde\u57ce","value":532527202205001},{"label":"\u963f\u9c81\u54e8","value":532527202205002},{"label":"\u9a6c\u5bb6\u5be8","value":532527202205003},{"label":"\u6c60\u897f","value":532527202205004}]},{"label":"\u4e09\u5858\u6751\u59d4\u4f1a","value":532527202206000,"children":[{"label":"\u5927\u5b54\u7167\u666e","value":532527202206001},{"label":"\u5c0f\u5b54\u7167\u666e","value":532527202206002},{"label":"\u5927\u5bc6\u679d","value":532527202206003},{"label":"\u4e09\u5858\u8857","value":532527202206004},{"label":"\u5858\u623f","value":532527202206005},{"label":"\u5e03\u5fb7\u9686\u4e0a\u5be8","value":532527202206006},{"label":"\u5e03\u5fb7\u9686\u4e0b\u5be8","value":532527202206007},{"label":"\u5e03\u5fb7\u9686\u8001\u5be8","value":532527202206008}]},{"label":"\u4ff1\u4e45\u6751\u59d4\u4f1a","value":532527202207000,"children":[{"label":"\u5927\u4ff1\u4e45","value":532527202207001},{"label":"\u5c0f\u4ff1\u4e45","value":532527202207002},{"label":"\u77f3\u9636\u811a\u4e0a\u5be8","value":532527202207003},{"label":"\u77f3\u9636\u811a\u4e0b\u5be8","value":532527202207004},{"label":"\u963f\u8def\u767d","value":532527202207005},{"label":"\u5e73\u7530\u4e00\u961f","value":532527202207006},{"label":"\u5e73\u7530\u4e8c\u961f","value":532527202207007}]},{"label":"\u65b9\u6446\u6751\u59d4\u4f1a","value":532527202208000,"children":[{"label":"\u5c0f\u5bc6\u679d","value":532527202208001},{"label":"\u5e84\u79d1","value":532527202208002},{"label":"\u6c99\u6e7e","value":532527202208003},{"label":"\u5c0f\u65b9\u6446","value":532527202208004},{"label":"\u6cd5\u679c","value":532527202208005},{"label":"\u5927\u65b9\u6446","value":532527202208006}]}]},{"label":"\u6c38\u5b81\u4e61","value":532527203000000,"children":[{"label":"\u6c38\u5b81\u6751\u59d4\u4f1a","value":532527203201000,"children":[{"label":"\u5927\u6c38\u5b81\u6751","value":532527203201001},{"label":"\u5c0f\u6c38\u5b81\u6751","value":532527203201002},{"label":"\u571f\u627e\u6751","value":532527203201003},{"label":"\u57ce\u5b50\u6751","value":532527203201004},{"label":"\u5c0f\u6c5f\u4e0a\u5be8\u6751","value":532527203201005},{"label":"\u5c0f\u6c5f\u4e0b\u5be8\u6751","value":532527203201006}]},{"label":"\u7b3c\u518c\u6751\u59d4\u4f1a","value":532527203202000,"children":[{"label":"\u6797\u76ca\u6751","value":532527203202001},{"label":"\u738b\u5bb6\u5be8\u6751","value":532527203202002},{"label":"\u5f20\u5bb6\u5be8\u6751","value":532527203202003},{"label":"\u4e5d\u6eaa\u5c71\u6751","value":532527203202004},{"label":"\u5927\u6c99\u5730\u6751","value":532527203202005},{"label":"\u5927\u84bf\u7b90\u6751","value":532527203202006},{"label":"\u5c0f\u84bf\u7b90\u6751","value":532527203202007},{"label":"\u8272\u8033\u53e4\u524d\u5be8\u6751","value":532527203202008},{"label":"\u8272\u8033\u53e4\u540e\u5be8\u6751","value":532527203202009}]},{"label":"\u820d\u8005\u6751\u59d4\u4f1a","value":532527203203000,"children":[{"label":"\u7eb8\u5382\u6751","value":532527203203001},{"label":"\u820d\u8005\u5927\u5be8\u6751","value":532527203203002},{"label":"\u820d\u8005\u5c0f\u5be8\u6751","value":532527203203003},{"label":"\u6d0b\u6d1e\u6cb3\u6751","value":532527203203004},{"label":"\u5c0f\u6316\u4e0d\u5f97\u6751","value":532527203203005},{"label":"\u5927\u6316\u4e0d\u5f97\u6751","value":532527203203006},{"label":"\u70ad\u623f\u6751","value":532527203203007},{"label":"\u957f\u5cad\u5e72\u6751","value":532527203203008},{"label":"\u5f90\u5bb6\u5be8\u6751","value":532527203203009},{"label":"\u5f20\u5bb6\u5be8\u6751","value":532527203203010},{"label":"\u674e\u5bb6\u5be8\u6751","value":532527203203011},{"label":"\u9ec4\u5bb6\u5be8\u6751","value":532527203203012}]},{"label":"\u963f\u671d\u6751\u59d4\u4f1a","value":532527203204000,"children":[{"label":"\u963f\u671d\u4e0a\u5be8\u6751","value":532527203204001},{"label":"\u963f\u671d\u4e0b\u5be8\u6751","value":532527203204002},{"label":"\u820d\u5353\u6751","value":532527203204003},{"label":"\u4e09\u9053\u7b90\u6751","value":532527203204004},{"label":"\u5c0f\u6c34\u4e95\u6751","value":532527203204005},{"label":"\u5927\u5bc6\u679d\u6751","value":532527203204006}]},{"label":"\u6cd5\u8863\u6751\u59d4\u4f1a","value":532527203205000,"children":[{"label":"\u5c0f\u5174\u5be8\u6751","value":532527203205001},{"label":"\u5c0f\u4e2d\u5be8\u6751","value":532527203205002},{"label":"\u5927\u4e2d\u5be8\u6751","value":532527203205003},{"label":"\u5c0f\u963f\u5ce8\u6751","value":532527203205004},{"label":"\u77f3\u5ca9\u811a\u6751","value":532527203205005},{"label":"\u5c0f\u6cd5\u8863\u6751","value":532527203205006},{"label":"\u6c34\u5934\u6751","value":532527203205007}]},{"label":"\u963f\u5ce8\u6751\u59d4\u4f1a","value":532527203206000,"children":[{"label":"\u963f\u5ce8\u6751","value":532527203206001},{"label":"\u963f\u65e6\u6751","value":532527203206002},{"label":"\u65e7\u5be8\u6751","value":532527203206003},{"label":"\u65b0\u5be8\u6751","value":532527203206004},{"label":"\u6c34\u4e95\u6751","value":532527203206005},{"label":"\u6768\u5bb6\u5be8\u6751","value":532527203206006},{"label":"\u9a6c\u5bb6\u5be8\u6751","value":532527203206007},{"label":"\u7ec6\u8116\u5b50\u6751","value":532527203206008},{"label":"\u5927\u5c71\u6751","value":532527203206009},{"label":"\u6298\u79df\u6751","value":532527203206010},{"label":"\u767d\u77f3\u5ca9","value":532527203206011},{"label":"\u5e84\u79d1\u6751","value":532527203206012},{"label":"\u4e0b\u5be8\u6751","value":532527203206013},{"label":"\u963f\u9c81\u6751","value":532527203206014},{"label":"\u9ebb\u6817\u6811\u6751","value":532527203206015}]}]}]}]

以上便是准备工作。

接着在main_activity.xml中写一个TextView,目的是点击这个TextView之后能够弹出地址选择器,选择地址之后把选择的地址显示在这个TextView上。关于TextView的xml我就不写了,比较简单。点击TextView之后需要弹出地址选择器,这个地址选择器取名叫做AreaPickerView,它是继承自Dialog的。具体代码如下:

 
   
import android.content.Context;
import android.content.res.AssetManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private TextView textView;
    //以下跟选择地址有关
    private AreaPickerView areaPickerView;
    private List<AddressBean> addressBeans;
    private int[] i;
    private String villageId;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView=findViewById(R.id.text_view);

        Gson gson = new Gson();
        addressBeans = gson.fromJson(getJsonFromAssets(MainActivity.this), new TypeToken<List<AddressBean>>() {
        }.getType());
        areaPickerView = new AreaPickerView(this, R.style.Dialog, addressBeans);
        areaPickerView.setAreaPickerViewCallback(new AreaPickerView.AreaPickerViewCallback() {
            @Override
            public void callback(int... value) {
                i=value;
                if (value.length == 4) {
                    textView.setText(addressBeans.get(value[0]).getLabel() + "-" + addressBeans.get(value[0]).getChildren().get(value[1]).getLabel() + "-" + addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).getLabel()+"-"+ addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).getChildren().get(value[3]).getLabel());
                    villageId=addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).getChildren().get(value[3]).getValue();
                } else{

                }
            }
        });

        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showListDialogvillage();
            }
        });
    }

    private void showListDialogvillage() {
        areaPickerView.setSelect(i);
        areaPickerView.show();
    }


    public static String getJsonFromAssets(Context context) {
        StringBuilder stringBuilder = new StringBuilder();
        try {
            AssetManager assetManager = context.getAssets();
            BufferedReader bf = new BufferedReader(new InputStreamReader(
                    assetManager.open("region.json")));
            String line;
            while ((line = bf.readLine()) != null) {
                stringBuilder.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return stringBuilder.toString();
    }
}

AddressBean 代码:


import java.util.List;

public class AddressBean {

    private String label;
    private String value;
    private boolean status;
    private List<CityBean> children;

    public String getLabel() {
        return label;
    }

    public void setLabel(String label) {
        this.label = label;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public boolean isStatus() {
        return status;
    }

    public void setStatus(boolean status) {
        this.status = status;
    }

    public List<CityBean> getChildren() {
        return children;
    }

    public void setChildren(List<CityBean> children) {
        this.children = children;
    }

    public class CityBean {
        private String label;
        private String value;
        private boolean status;
        private List<AreaBean> children;

        public String getLabel() {
            return label;
        }

        public void setLabel(String label) {
            this.label = label;
        }

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }

        public boolean isStatus() {
            return status;
        }

        public void setStatus(boolean status) {
            this.status = status;
        }

        public List<AreaBean> getChildren() {
            return children;
        }

        public void setChildren(List<AreaBean> children) {
            this.children = children;
        }

        public class AreaBean {
            private String label;
            private String value;
            private boolean status;
            private List<VillageBean> children;

            public String getLabel() {
                return label;
            }

            public void setLabel(String label) {
                this.label = label;
            }

            public String getValue() {
                return value;
            }

            public void setValue(String value) {
                this.value = value;
            }

            public boolean isStatus() {
                return status;
            }

            public void setStatus(boolean status) {
                this.status = status;
            }

            public void setChildren(List<VillageBean> children) {
                this.children = children;
            }
            public List<VillageBean> getChildren() {
                return children;
            }

            public class VillageBean{
                private String label;
                private String value;
                private boolean status;

                public String getLabel() {
                    return label;
                }

                public void setLabel(String label) {
                    this.label = label;
                }

                public String getValue() {
                    return value;
                }

                public void setValue(String value) {
                    this.value = value;
                }

                public boolean isStatus() {
                    return status;
                }

                public void setStatus(boolean status) {
                    this.status = status;
                }
            }

        }

    }

}

R.style.Dialog如下:


    <style name="Dialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <!--边框-->
        <item name="android:windowIsFloating">true</item>
        <!--是否浮现在activity之上-->
        <item name="android:windowIsTranslucent">false</item>
        <!--半透明-->
        <item name="android:windowNoTitle">true</item>
        <!--无标题-->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!--背景透明-->
        <item name="android:backgroundDimEnabled">true</item>
        <!--模糊-->
    </style>
R.style.TabLayoutTextStyle代码:

    <style name="TabLayoutTextStyle">
        <item name="android:textSize">14sp</item>
    </style>
R.style.TabLayoutTextStyle代码:
  <style name="PickerAnim" parent="@android:style/Animation">
        <item name="android:windowEnterAnimation">@anim/push_bottom_in</item>
        <item name="android:windowExitAnimation">@anim/push_bottom_out</item>
    </style>
ProvinceAdapter代码:

import android.graphics.Color;
import android.support.annotation.Nullable;

import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;

import java.util.List;

public class ProvinceAdapter extends BaseQuickAdapter<AddressBean, BaseViewHolder> {
    public ProvinceAdapter(int layoutResId, @Nullable List<AddressBean> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(BaseViewHolder helper, AddressBean item) {
        helper.setText(R.id.textview, item.getLabel());
        helper.setTextColor(R.id.textview, item.isStatus() ? Color.parseColor("#65C15C") : Color.parseColor("#444444"));
    }
}
CityAdapter代码:

import android.graphics.Color;
import android.support.annotation.Nullable;

import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;

import java.util.List;

public class CityAdapter extends BaseQuickAdapter<AddressBean.CityBean, BaseViewHolder> {
    public CityAdapter(int layoutResId, @Nullable List<AddressBean.CityBean> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(BaseViewHolder helper, AddressBean.CityBean item) {
        helper.setText(R.id.textview, item.getLabel());
        helper.setTextColor(R.id.textview, item.isStatus() ? Color.parseColor("#65C15C") : Color.parseColor("#444444"));
    }
}
AreaAdapter代码:

import android.graphics.Color;
import android.support.annotation.Nullable;

import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;

import java.util.List;

public class AreaAdapter extends BaseQuickAdapter<AddressBean.CityBean.AreaBean, BaseViewHolder> {
    public AreaAdapter(int layoutResId, @Nullable List<AddressBean.CityBean.AreaBean> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(BaseViewHolder helper, AddressBean.CityBean.AreaBean item) {
        helper.setText(R.id.textview, item.getLabel());
        helper.setTextColor(R.id.textview, item.isStatus() ? Color.parseColor("#65C15C") : Color.parseColor("#444444"));
    }
}

VillageAdapter代码:


import android.graphics.Color;
import android.support.annotation.Nullable;

import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;

import java.util.List;

public class VillageAdapter extends BaseQuickAdapter<AddressBean.CityBean.AreaBean.VillageBean, BaseViewHolder> {
    public VillageAdapter(int layoutResId, @Nullable List<AddressBean.CityBean.AreaBean.VillageBean> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(BaseViewHolder helper, AddressBean.CityBean.AreaBean.VillageBean item) {
        helper.setText(R.id.textview, item.getLabel());
        helper.setTextColor(R.id.textview, item.isStatus() ? Color.parseColor("#65C15C") : Color.parseColor("#444444"));
    }
}
AreaPickerView代码:

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;

import com.chad.library.adapter.base.BaseQuickAdapter;

import java.util.ArrayList;
import java.util.List;

public class AreaPickerView extends Dialog {

    private TabLayout tabLayout;
    private ViewPager viewPager;
    private ImageView ivBtn;

    private AreaPickerViewCallback areaPickerViewCallback;
    /**
     * View的集合
     */
    private List<View> views;
    /**
     * tab的集合
     */
    private List<String> strings;
    /**
     * 省
     */
    private List<AddressBean> addressBeans;
    /**
     * 市
     */
    private List<AddressBean.CityBean> cityBeans;
    /**
     * 区
     */
    private List<AddressBean.CityBean.AreaBean> areaBeans;
    /**
     * 村
     */
    private List<AddressBean.CityBean.AreaBean.VillageBean> villageBeans;

    private Context context;

    private ViewPagerAdapter viewPagerAdapter;
    private ProvinceAdapter provinceAdapter;
    private CityAdapter cityAdapter;
    private AreaAdapter areaAdapter;
    private VillageAdapter villageAdapter;

    /**
     * 选中的区域下标 默认-1
     */
    private int provinceSelected = -1;
    private int citySelected = -1;
    private int areaSelected = -1;
    private int villageSelected=-1;

    /**
     * 历史选中的区域下标 默认-1
     */
    private int oldProvinceSelected = -1;
    private int oldCitySelected = -1;
    private int oldAreaSelected = -1;
    private int oldVillageSelected=-1;

    private RecyclerView areaRecyclerView;
    private RecyclerView cityRecyclerView;
    private RecyclerView villageRecyclerView;

    private boolean isCreate;

    public AreaPickerView(@NonNull Context context, int themeResId, List<AddressBean> addressBeans) {
        super(context, themeResId);
        this.addressBeans = addressBeans;
        this.context = context;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog_area_pickerview);
        Window window = this.getWindow();

        isCreate = true;

        /**
         * 位于底部
         */
        window.setGravity(Gravity.BOTTOM);
        WindowManager.LayoutParams params = window.getAttributes();
        params.width = WindowManager.LayoutParams.MATCH_PARENT;
        window.setAttributes(params);
        /**
         * 设置弹出动画
         */
        window.setWindowAnimations(R.style.PickerAnim);

        tabLayout = findViewById(R.id.tablayout);
        viewPager = findViewById(R.id.viewpager);
        ivBtn = findViewById(R.id.iv_btn);
        ivBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dismiss();
            }
        });

        View provinceView = LayoutInflater.from(context)
                .inflate(R.layout.layout_recyclerview, null, false);
        View cityView = LayoutInflater.from(context)
                .inflate(R.layout.layout_recyclerview, null, false);
        View areaView = LayoutInflater.from(context)
                .inflate(R.layout.layout_recyclerview, null, false);
        final View villageView = LayoutInflater.from(context)
                .inflate(R.layout.layout_recyclerview, null, false);

        final RecyclerView provinceRecyclerView = provinceView.findViewById(R.id.recyclerview);
        cityRecyclerView = cityView.findViewById(R.id.recyclerview);
        areaRecyclerView = areaView.findViewById(R.id.recyclerview);
        villageRecyclerView=villageView.findViewById(R.id.recyclerview);

        views = new ArrayList<>();
        views.add(provinceView);
        views.add(cityView);
        views.add(areaView);
        views.add(villageView);

        /**
         * 配置adapter
         */
        viewPagerAdapter = new ViewPagerAdapter();
        viewPager.setAdapter(viewPagerAdapter);
        tabLayout.setupWithViewPager(viewPager);
        /**
         * 这句话设置了过后,假如又3个tab 删除第三个 刷新过后 第二个划第三个会有弹性
         * viewPager.setOffscreenPageLimit(2);
         */

        provinceAdapter = new ProvinceAdapter(R.layout.item_address, addressBeans);
        provinceRecyclerView.setAdapter(provinceAdapter);
        LinearLayoutManager provinceManager = new LinearLayoutManager(context);
        provinceRecyclerView.setLayoutManager(provinceManager);
        provinceAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
                Log.e("AreaPickerView", oldProvinceSelected + "~~~" + oldCitySelected + "~~~" + oldAreaSelected);

                cityBeans.clear();
                areaBeans.clear();
                villageBeans.clear();

                addressBeans.get(position).setStatus(true);
                provinceSelected = position;

                if (oldProvinceSelected != -1 && oldProvinceSelected != provinceSelected) {
                    addressBeans.get(oldProvinceSelected).setStatus(false);
                    Log.e("AreaPickerView", "清空");
                }
                if (position != oldProvinceSelected) {
                    if (oldCitySelected != -1) {
                        addressBeans.get(oldProvinceSelected).getChildren().get(oldCitySelected).setStatus(false);
                    }
                    if (oldAreaSelected != -1) {
                        addressBeans.get(oldProvinceSelected).getChildren().get(oldCitySelected).getChildren().get(oldAreaSelected).setStatus(false);
                    }

                    oldCitySelected = -1;
                    oldAreaSelected = -1;
                    oldVillageSelected=-1;

                }
                cityBeans.addAll(addressBeans.get(position).getChildren());

                provinceAdapter.notifyDataSetChanged();
                cityAdapter.notifyDataSetChanged();
                areaAdapter.notifyDataSetChanged();
                villageAdapter.notifyDataSetChanged();

                strings.set(0, addressBeans.get(position).getLabel());

                if (strings.size() == 1) {
                    strings.add("请选择");
                } else if (strings.size() > 1) {
                    if (position != oldProvinceSelected) {
                        strings.set(1, "请选择");
                        if (strings.size() == 4) {
                            strings.remove(3);
                        }
                    }
                }
                tabLayout.setupWithViewPager(viewPager);
                viewPagerAdapter.notifyDataSetChanged();
                tabLayout.getTabAt(1).select();
                oldProvinceSelected = provinceSelected;
            }
        });

        cityBeans = new ArrayList<>();
        cityAdapter = new CityAdapter(R.layout.item_address, cityBeans);
        LinearLayoutManager cityListManager = new LinearLayoutManager(context);
        cityRecyclerView.setLayoutManager(cityListManager);
        cityRecyclerView.setAdapter(cityAdapter);
        cityAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
                areaBeans.clear();
                villageBeans.clear();

                cityBeans.get(position).setStatus(true);
                citySelected = position;

                if (oldCitySelected != -1 && oldCitySelected != citySelected) {
                    addressBeans.get(oldProvinceSelected).getChildren().get(oldCitySelected).setStatus(false);
                }
                if (position != oldCitySelected) {
                    if (oldAreaSelected != -1 && cityBeans.get(position).getChildren() != null) {
                        addressBeans.get(oldProvinceSelected).getChildren().get(oldCitySelected).getChildren().get(oldAreaSelected).setStatus(false);
                    }

                    oldAreaSelected = -1;
                    oldVillageSelected=-1;

                }
                oldCitySelected = citySelected;
                if (cityBeans.get(position).getChildren() != null) {
                    areaBeans.addAll(cityBeans.get(position).getChildren());

                    cityAdapter.notifyDataSetChanged();
                    areaAdapter.notifyDataSetChanged();
                    villageAdapter.notifyDataSetChanged();

                    strings.set(1, cityBeans.get(position).getLabel());

                    if (strings.size() == 2) {
                        strings.add("请选择");
                    } else if (strings.size() == 4) {
                        strings.set(3, "请选择");
                    }
                    tabLayout.setupWithViewPager(viewPager);
                    viewPagerAdapter.notifyDataSetChanged();
                    tabLayout.getTabAt(2).select();
                } else {
                    oldAreaSelected = -1;
                    oldVillageSelected=-1;

                    cityAdapter.notifyDataSetChanged();
                    areaAdapter.notifyDataSetChanged();
                    villageAdapter.notifyDataSetChanged();

                    strings.set(1, cityBeans.get(position).getLabel());

                    tabLayout.setupWithViewPager(viewPager);
                    viewPagerAdapter.notifyDataSetChanged();
                    dismiss();
                    areaPickerViewCallback.callback(provinceSelected, citySelected);
                }
            }
        });

        areaBeans = new ArrayList<>();
        areaAdapter = new AreaAdapter(R.layout.item_address, areaBeans);
        LinearLayoutManager areaListManager = new LinearLayoutManager(context);
        areaRecyclerView.setLayoutManager(areaListManager);
        areaRecyclerView.setAdapter(areaAdapter);
        areaAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
                villageBeans.clear();

                areaBeans.get(position).setStatus(true);
                areaSelected = position;

                if (oldAreaSelected != -1 && oldAreaSelected != areaSelected) {
                    addressBeans.get(oldProvinceSelected).getChildren().get(oldCitySelected).getChildren().get(oldAreaSelected).setStatus(false);
                }
                if (position != oldAreaSelected) {

                    if (oldVillageSelected != -1 && areaBeans.get(position).getChildren() != null) {
                        addressBeans.get(oldProvinceSelected).getChildren().get(oldCitySelected).getChildren().get(oldAreaSelected).getChildren().get(oldVillageSelected).setStatus(false);
                    }

                    oldVillageSelected=-1;
                }
                oldAreaSelected = areaSelected;
                if (areaBeans.get(position).getChildren() != null) {
                    villageBeans.addAll(areaBeans.get(position).getChildren());

                    areaAdapter.notifyDataSetChanged();
                    villageAdapter.notifyDataSetChanged();

                    strings.set(2, areaBeans.get(position).getLabel());

                    if (strings.size() == 3) {
                        strings.add("请选择");
                    } else if (strings.size() == 4) {
                        strings.set(3, "请选择");
                    }
                    tabLayout.setupWithViewPager(viewPager);
                    viewPagerAdapter.notifyDataSetChanged();
                    tabLayout.getTabAt(3).select();
                }else {
                    villageSelected=-1;

                    areaAdapter.notifyDataSetChanged();
                    villageAdapter.notifyDataSetChanged();

                    strings.set(2, areaBeans.get(position).getLabel());

                    tabLayout.setupWithViewPager(viewPager);
                    viewPagerAdapter.notifyDataSetChanged();
                    dismiss();
                    areaPickerViewCallback.callback(provinceSelected, citySelected,areaSelected);
                }

            }
        });


       /* areaBeans = new ArrayList<>();
        areaAdapter = new AreaAdapter(R.layout.item_address, areaBeans);
        LinearLayoutManager areaListManager = new LinearLayoutManager(context);
        areaRecyclerView.setLayoutManager(areaListManager);
        areaRecyclerView.setAdapter(areaAdapter);
        areaAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
                strings.set(2, areaBeans.get(position).getLabel());
                tabLayout.setupWithViewPager(viewPager);
                viewPagerAdapter.notifyDataSetChanged();
                areaBeans.get(position).setStatus(true);
                areaSelected = position;
                if (oldAreaSelected != -1 && oldAreaSelected != position) {
                    areaBeans.get(oldAreaSelected).setStatus(false);
                }
                oldAreaSelected = areaSelected;
                areaAdapter.notifyDataSetChanged();
                dismiss();
                areaPickerViewCallback.callback(provinceSelected, citySelected, areaSelected);
            }
        });
*/

        villageBeans = new ArrayList<>();
        villageAdapter = new VillageAdapter(R.layout.item_address, villageBeans);
        LinearLayoutManager villageListManager = new LinearLayoutManager(context);
        villageRecyclerView.setLayoutManager(villageListManager);
        villageRecyclerView.setAdapter(villageAdapter);
        villageAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
                strings.set(3, villageBeans.get(position).getLabel());
                tabLayout.setupWithViewPager(viewPager);
                viewPagerAdapter.notifyDataSetChanged();
                villageBeans.get(position).setStatus(true);
                villageSelected = position;
                if (oldVillageSelected != -1 && oldVillageSelected != position) {
                    villageBeans.get(oldVillageSelected).setStatus(false);
                }
                oldVillageSelected = villageSelected;
                villageAdapter.notifyDataSetChanged();
                dismiss();
                areaPickerViewCallback.callback(provinceSelected, citySelected, areaSelected,villageSelected);
            }
        });

        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i1) {

            }

            @Override
            public void onPageSelected(int i) {
                switch (i) {
                    case 0:
                        provinceRecyclerView.scrollToPosition(oldProvinceSelected == -1 ? 0 : oldProvinceSelected);
                        break;
                    case 1:
                        cityRecyclerView.scrollToPosition(oldCitySelected == -1 ? 0 : oldCitySelected);
                        break;
                    case 2:
                        areaRecyclerView.scrollToPosition(oldAreaSelected == -1 ? 0 : oldAreaSelected);
                        break;
                    case 3:
                        villageRecyclerView.scrollToPosition(oldVillageSelected == -1 ? 0 : oldVillageSelected);
                        break;
                }
            }

            @Override
            public void onPageScrollStateChanged(int i) {

            }
        });

    }

    class ViewPagerAdapter extends PagerAdapter {

        @Override
        public int getCount() {
            return strings.size();
        }

        @Override
        public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
            return view == o;
        }

        @Nullable
        @Override
        public CharSequence getPageTitle(int position) {
            return strings.get(position);
        }

        @NonNull
        @Override
        public Object instantiateItem(@NonNull ViewGroup container, int position) {
            container.addView(views.get(position));
            Log.e("AreaPickView", "------------instantiateItem");
            return views.get(position);
        }

        @Override
        public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
            container.removeView(views.get(position));
            Log.e("AreaPickView", "------------destroyItem");
        }

    }

    public interface AreaPickerViewCallback {
        void callback(int... value);
    }

    public void setAreaPickerViewCallback(AreaPickerViewCallback areaPickerViewCallback) {
        this.areaPickerViewCallback = areaPickerViewCallback;
    }

    public void setSelect(int... value) {
        strings = new ArrayList<>();
        if (value == null) {
            strings.add("请选择");
            if (isCreate) {
                tabLayout.setupWithViewPager(viewPager);
                viewPagerAdapter.notifyDataSetChanged();
                tabLayout.getTabAt(0).select();
                if (provinceSelected != -1)
                    addressBeans.get(provinceSelected).setStatus(false);
                if (citySelected != -1)
                    addressBeans.get(provinceSelected).getChildren().get(citySelected).setStatus(false);
                cityBeans.clear();
                areaBeans.clear();
                provinceAdapter.notifyDataSetChanged();
                cityAdapter.notifyDataSetChanged();
                areaAdapter.notifyDataSetChanged();
            }
            return;
        }

        if (value.length == 4) {
            strings.add(addressBeans.get(value[0]).getLabel());
            strings.add(addressBeans.get(value[0]).getChildren().get(value[1]).getLabel());
            strings.add(addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).getLabel());
            strings.add(addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).getChildren().get(value[3]).getLabel());
            tabLayout.setupWithViewPager(viewPager);
            viewPagerAdapter.notifyDataSetChanged();
            tabLayout.getTabAt(value.length - 1).select();
            if (provinceSelected != -1)
                addressBeans.get(provinceSelected).setStatus(false);
            if (citySelected != -1)
                addressBeans.get(provinceSelected).getChildren().get(citySelected).setStatus(false);
            addressBeans.get(value[0]).setStatus(true);
            addressBeans.get(value[0]).getChildren().get(value[1]).setStatus(true);
            addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).setStatus(true);
            addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).getChildren().get(value[3]).setStatus(true);
            cityBeans.clear();
            cityBeans.addAll(addressBeans.get(value[0]).getChildren());
            areaBeans.clear();
            areaBeans.addAll(addressBeans.get(value[0]).getChildren().get(value[1]).getChildren());
            villageBeans.clear();
            villageBeans.addAll(addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).getChildren());
            provinceAdapter.notifyDataSetChanged();
            cityAdapter.notifyDataSetChanged();
            areaAdapter.notifyDataSetChanged();
            villageAdapter.notifyDataSetChanged();
            oldProvinceSelected = value[0];
            oldCitySelected = value[1];
            oldAreaSelected = value[2];
            oldVillageSelected=value[3];
            villageRecyclerView.scrollToPosition(oldVillageSelected == -1 ? 0 : oldVillageSelected);
        }

        if (value.length == 3) {
            strings.add(addressBeans.get(value[0]).getLabel());
            strings.add(addressBeans.get(value[0]).getChildren().get(value[1]).getLabel());
            strings.add(addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).getLabel());
            tabLayout.setupWithViewPager(viewPager);
            viewPagerAdapter.notifyDataSetChanged();
            tabLayout.getTabAt(value.length - 1).select();
            if (provinceSelected != -1)
                addressBeans.get(provinceSelected).setStatus(false);
            if (citySelected != -1)
                addressBeans.get(provinceSelected).getChildren().get(citySelected).setStatus(false);
            addressBeans.get(value[0]).setStatus(true);
            addressBeans.get(value[0]).getChildren().get(value[1]).setStatus(true);
            addressBeans.get(value[0]).getChildren().get(value[1]).getChildren().get(value[2]).setStatus(true);
            cityBeans.clear();
            cityBeans.addAll(addressBeans.get(value[0]).getChildren());
            areaBeans.clear();
            areaBeans.addAll(addressBeans.get(value[0]).getChildren().get(value[1]).getChildren());
            provinceAdapter.notifyDataSetChanged();
            cityAdapter.notifyDataSetChanged();
            areaAdapter.notifyDataSetChanged();
            oldProvinceSelected = value[0];
            oldCitySelected = value[1];
            oldAreaSelected = value[2];
            villageRecyclerView.scrollToPosition(oldVillageSelected == -1 ? 0 : oldVillageSelected);
        }

        if (value.length == 2) {
            strings.add(addressBeans.get(value[0]).getLabel());
            strings.add(addressBeans.get(value[0]).getChildren().get(value[1]).getLabel());
            tabLayout.setupWithViewPager(viewPager);
            viewPagerAdapter.notifyDataSetChanged();
            tabLayout.getTabAt(value.length - 1).select();
            addressBeans.get(provinceSelected).setStatus(false);
            addressBeans.get(provinceSelected).getChildren().get(citySelected).setStatus(false);
            addressBeans.get(value[0]).setStatus(true);
            addressBeans.get(value[0]).getChildren().get(value[1]).setStatus(true);
            cityBeans.clear();
            cityBeans.addAll(addressBeans.get(value[0]).getChildren());
            provinceAdapter.notifyDataSetChanged();
            cityAdapter.notifyDataSetChanged();
            oldProvinceSelected = value[0];
            oldCitySelected = value[1];
            oldAreaSelected = -1;
            cityRecyclerView.scrollToPosition(oldCitySelected == -1 ? 0 : oldCitySelected);
        }

    }

}

item_address.xml代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="15dp"
        android:layout_marginLeft="15dp"
        android:layout_marginTop="15dp"
        android:text="xxx"
        android:textColor="#444444"
        android:textSize="14sp" />

</LinearLayout>

layout_recycler.xml代码:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:overScrollMode="never"/>

</LinearLayout>
dialog_area_pickerview.xml代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="500dp"
    android:background="#ffffff"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="15dp"
        android:gravity="center_vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="15dp"
            android:text="归属地"
            android:textColor="#000000"
            android:textSize="16sp"
            android:textStyle="bold" />

        <ImageView
            android:id="@+id/iv_btn"
            android:layout_width="18dp"
            android:layout_height="18dp"
            android:layout_alignParentRight="true"
            android:layout_marginRight="15dp"
            android:layout_centerVertical="true"
            android:src="@mipmap/close_village" />
    </RelativeLayout>
    <android.support.design.widget.TabLayout
        android:id="@+id/tablayout"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:background="#ffffff"
        app:tabIndicatorColor="#65C15C"
        app:tabIndicatorHeight="1dp"
        app:tabMode="scrollable"
        app:tabRippleColor="@null"
        app:tabSelectedTextColor="#65C15C"
        app:tabTextAppearance="@style/TabLayoutTextStyle"
        app:tabTextColor="#444444" />

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="5dp"
        android:overScrollMode="never" />

</LinearLayout>

最后需要在res目录下新建动画文件夹anim:

push_bottom_out和push_bottom_in分别是:
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="200"
        android:fromYDelta="0"
        android:toYDelta="50%p" />
</set>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="300"
        android:fromYDelta="50%p"
        android:toYDelta="0" />
</set>
 
发布了75 篇原创文章 · 获赞 31 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/yaoyaoyao_123/article/details/103550227
今日推荐