当前位置: 首页 > news >正文

安卓请求服务器[根据服务器的内容来更新spinner]

根据服务器的内容来更新spinner

本文内容请结合如下两篇文章一起看:
腾讯云函数node.js返回自动带反斜杠
腾讯云函数部署环境[使用函数URL]
现在有这样一个需求,APP有一个下拉选择框作为版本选择,因为改个管脚就变成一个版本,客户需求也很零散,所以后期会大量增加版本,这时候每增加一个版本就让客户更新一次APP比较麻烦,因为客户有很多,不好处理,所以思来想去还是这个下拉选择框能够从服务器获取然后更新比较好,现在就来做这个事情!
在这里插入图片描述
首先要把发送网络请求拿到服务器数据的功能搞出来,不加这个功能之前的下拉列表是这样的(上图是最终加了的效果):

 String[] ctype = new String[]{"001","001-1", "002","002-1","002-2","003","004","004-1","001-2",};spinner_versiontype_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, ctype);  //创建一个数组适配器spinner_versiontype_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);     //设置下拉列表框的下拉选项样式

onCreate函数中增加如下内容:

Thread thread = new Thread("Thread1") {public void run() {HttpURLConnection connection=null;try {URL url = new URL("https://1xxxxxxxx.scf.tencentcs.com/RequestJson?id=BleCloudControlMode");connection = (HttpURLConnection) url.openConnection();connection.setConnectTimeout(3000);connection.setReadTimeout(3000);//设置请求方式 GET / POST 一定要大小connection.setRequestMethod("GET");connection.setDoInput(true);connection.setDoOutput(false);connection.connect();int responseCode = connection.getResponseCode();if (responseCode != HttpURLConnection.HTTP_OK) {throw new IOException("HTTP error code" + responseCode);}String result = getStringByStream(connection.getInputStream());if (result == null) {Log.d("Fail", "失败了");}else{result = result.substring(1,result.length()-1).replace("\\","");Gson gson = new Gson();Employee empObject = gson.fromJson(result, Employee.class);//System.out.println(empObject);Message message = new Message();message.what = 1;message.obj = empObject.getMode();mHandler.sendMessage(message);}} catch (Exception e) {e.printStackTrace();}};};thread.start();

这里从服务器拿到数据后发送一个消息给主线程,主线程收到后这样操作UI显示:

//全局变量ArrayAdapter<String> spinner_versiontype_adapter;Handler mHandler;mHandler = new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what){case 1:String str=(String)(msg.obj);String[] mode = str.split(";");spinner_versiontype_adapter = new ArrayAdapter<String>(OTA_Active.this, android.R.layout.simple_spinner_item, mode);spinner_versiontype.setAdapter(spinner_versiontype_adapter);spinner_versiontype_adapter.notifyDataSetChanged();}}};

根据腾讯云函数node.js返回自动带反斜杠文章的代码说明可以得到代码运行后下拉选择框会变成本章节第一幅图的样子!
这样修改后,如果还要增加版本号只用修改云函数然后重新部署就行了,客户不用升级APP,极大方便使用,而且这种方式比在COS上保存一个xml文件来得更加容易,也是为了后面的功能做铺垫!

相关文章:

  • 华为5288 V5服务器安装BCLinux8U4手记
  • 电传动无杆飞机牵引车交付用户
  • 如何找BMS算法、BMS软件的实习
  • CentOS8换源
  • spdlog一个非常好用的C++日志库(四): 源码分析之logger类
  • 防爆巡检终端在石化工厂安全保障中的应用
  • 图像的像素在内存中的存储方式
  • 【Unity navmeshaggent 组件】
  • Linux Vim最全面的教程
  • web学习笔记(七十五)
  • 蓝牙模块的使用01,OOOLMF蓝牙模块HC05调试使用01AT设置从机,手机用软件对接
  • 《Unity3D高级编程之进阶主程》第一章 C#要点技术(六) 搜索算法
  • 基于SpringBoot的篮球竞赛预约平台
  • 概率论与数理统计_上_科学出版社
  • HarmonyOS ArkUi Tabs+TabContent+List实现tab吸顶功能
  • 网络传输文件的问题
  • Android开源项目规范总结
  • create-react-app做的留言板
  • css选择器
  • Go 语言编译器的 //go: 详解
  • GraphQL学习过程应该是这样的
  • HTTP那些事
  • Java 最常见的 200+ 面试题:面试必备
  • js如何打印object对象
  • KMP算法及优化
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Object.assign方法不能实现深复制
  • Service Worker
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • spring-boot List转Page
  • 工程优化暨babel升级小记
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 浅谈Golang中select的用法
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 微信开放平台全网发布【失败】的几点排查方法
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 写给高年级小学生看的《Bash 指南》
  • 一文看透浏览器架构
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • (安卓)跳转应用市场APP详情页的方式
  • (待修改)PyG安装步骤
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)ssm码农论坛 毕业设计 231126
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .gitignore
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .Net Web项目创建比较不错的参考文章
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .NET中统一的存储过程调用方法(收藏)
  • .Net组件程序设计之线程、并发管理(一)