震惊!Android原生Spinner实现三级联动

三级联动json数据

点击免积分下载

android studio文件配置

对着工程目录右键 点击new -》 folder -》assets folder

将 下载好的json文件放进去

导入依赖

Gson [因为要解析json所以使用gson]

代码实现

xml

activity_test.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".TestActivity"><Spinnerandroid:id="@+id/spinner_1"android:layout_width="130dp"android:layout_height="50dp"></Spinner><Spinnerandroid:id="@+id/spinner_2"android:layout_width="130dp"android:layout_height="50dp"></Spinner><Spinnerandroid:id="@+id/spinner_3"android:layout_width="130dp"android:layout_height="50dp"></Spinner>
</LinearLayout>

item_select.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="45dp"android:background="#fff"android:textSize="14dp"android:textColor="#000"android:gravity="center"/>

TestActivity.java

package com.robot.pk10;import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;import androidx.appcompat.app.AppCompatActivity;import com.google.gson.Gson;import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;public class TestActivity extends AppCompatActivity {String[]p = new String[31];String[][] c = new String[31][200];String[][][] a = new String[31][200][300];int index2 = 0;private Spinner spinner1;private Spinner spinner2;private Spinner spinner3;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 初始化setContentView(R.layout.activity_test);spinner1 = findViewById(R.id.spinner_1);spinner2 = findViewById(R.id.spinner_2);spinner3 = findViewById(R.id.spinner_3);// 读取json文件read();// 设置适配器spinner1.setAdapter(new ArrayAdapter<String>(this,R.layout.item_select,p));spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {// 下拉框选中事件index2 = i;List<String> box = new ArrayList<String>(Arrays.asList(c[i]));box.removeIf(Objects::isNull);spinner2.setAdapter(new ArrayAdapter<String>(TestActivity.this,R.layout.item_select,box));}@Overridepublic void onNothingSelected(AdapterView<?> adapterView) {}});spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {List<String> box = new ArrayList<String>(Arrays.asList(a[index2][i]));box.removeIf(Objects::isNull);spinner3.setAdapter(new ArrayAdapter<String>(TestActivity.this,R.layout.item_select,box));}@Overridepublic void onNothingSelected(AdapterView<?> adapterView) {}});}public void read(){// 设置缓冲区byte []array = new byte[1024*100];int count =0;String word;StringBuffer sb = new StringBuffer();try {// 打开文件以流的方式打开InputStream stream = this.getApplicationContext().getAssets().open("place.txt");count = stream.read(array);while(count>0){word = new String(array, 0, count);sb.append(word);count = stream.read(array);}} catch (IOException e) {e.printStackTrace();}// 将json文件解析成ListList list = new Gson().fromJson(sb.toString(), List.class);int pIndex = 0; // 省索引int cIndex = 0; // 城市索引int aIndex = 0; // 区索引// 遍历for (Object o : list) {Map pMap = (Map) o;// 取出省的名字String pName = (String) pMap.get("provinceName");p[pIndex] = pName;// 取出城市listList pList = (List) pMap.get("mallCityList");for (Object o1 : pList) {// 二级遍历Map cMap = (Map) o1;String cName = (String) cMap.get("cityName");List cList = (List) cMap.get("mallAreaList");c[pIndex][cIndex] = cName;for (Object o2 : cList) {// 三级遍历Map aMap = (Map) o2;String aName = (String) aMap.get("areaName");a[pIndex][cIndex][aIndex] = aName;aIndex++;}cIndex++;// 将aIndex变成0进行下一次循环aIndex=0;}pIndex++;// 将cIndex变成0进行下一次循环cIndex=0;}}
}

震惊!Android原生Spinner实现三级联动相关推荐

  1. js原生,省市区三级联动插件

    js原生,省市区三级联动插件 <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  2. 原生js写三级联动 java_原生js三级联动的简单实现代码

    本文实例为大家分享了js查询天气应用,供大家参考,具体内容如下 实现功能:打开网页时显示用户所在城市的天气状况,在输入框输入城市可查询其它城市. 实现过程:先调用百度地图的API来获取用户所在的城市, ...

  3. 实验有效的js原生前端 全国三级联动

    这是我的目录 平级 注意要在一个级别 记录的笔记,当初记录在word文档 侵权就删哈 第二个亲测 有用的三级联动 intextHtml.html <!doctype html> <h ...

  4. 原生JS写三级联动 --省--市--区

    效果如下: css代码 <style>select{width: 100px;height: 30px;} </style> html代码 <div id="b ...

  5. 插件 原生js 省市区 三级联动 源码

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8" ...

  6. android studio 测试地址三级联动的时候 json数据太长 提示错误: 常量字符串过长

    在项目中应用地址三级联动的时候  因为测试给了一大窜的json数据   就在项目中创建了一个常量  保存这个json  然后在专程bean  去应用   但是提示错误: 常量字符串过长 于是该用jso ...

  7. 原生js实现三级联动

    学习 自 于 http://blog.csdn.net/Elenal/article/details/51493510 <!DOCTYPE html> <html lang=&quo ...

  8. 原生js省市区三级联动

    html模板 <form class="mainLeft" onsubmit="formSubmit(event)"><select id=& ...

  9. Android 之省市县三级联动XML文件

    <?xml version="1.0" encoding="utf-8"?> <citylist><p p_id = " ...

最新文章

  1. Python入门100题 | 第066题
  2. 让产品经理GC的文本段落两端对齐css
  3. 使用Azure人脸API对图片进行人脸识别
  4. android 广播 关闭对话框,Android 对话框、信息提示和菜单
  5. centos 6.x下jira显示饼图乱码解决方法
  6. javaweb环境的配置 以及tomcat的安装
  7. python爬取genek视频_【Python】爬虫(Xpath):批量爬取站长免费简历
  8. Linux学习笔记总结
  9. EDEM创建用于模拟颗粒工厂的多边形后,选中多边形视图中不显示红色多边形
  10. bootstrap collapse切换改变图标
  11. Mac下用android studio创建安卓模拟器
  12. 按键精灵实现验证码识别
  13. geopandas和shapely使用(使用pyproj进行坐标转换)
  14. 《论语》全译——公冶长篇第五
  15. 回首神仙地,还道人间好
  16. 基于国服DOTA2的反和谐vpk
  17. Git入门到精通(大全)
  18. 关于mysql注入说法正确的是_1. 在 Spring中,下列关于 依赖注入 的 说法 , 正确的是( ) 。_学小易找答案...
  19. TRMM降水数据下载步骤
  20. openPOWERLINK开源POWERLINK协议栈说明文档中文非官方翻译

热门文章

  1. 遨博机器人执行线程_遨博机器人报错代码:多线程控制命令Thread和脚本命令Script...
  2. Mac环境下brew安装、SVN安装
  3. 如何恢复excel文档原来的内容
  4. win10安装centos7、安装显卡驱动和cuda、安装mpich全流程
  5. SimpleFOC(九)—— 霍尔电机控制
  6. nginx添加允许跨域header头
  7. miRNA数据分析专题
  8. 其他浏览器均正常显示,uc不显示效果
  9. php做钓鱼视频教程,钓鱼人作品--我做珠珠的一些过程希望对大家有用
  10. MATLAB中用nlinfit做多元非线性拟合(回归)