联网请求数据:Android篇
这篇文章主要回顾之前的MYangtzeu App教程的联网请求方法和json解析套路,主要目的是实现左侧菜单数据的联网获取。
1、先上请求地址实体类Constants.java
package com.vitoyan.myangtzeu.utils; /**
* 作者:Vito-Yan
* 作用:常量类,配置联网请求地址
*/
public class Constants { /**
* 联网请求的ip和端口
*/
public static final String BASE_URL = "http://10.155.106.108:9090/web_home";
// public static final String BASE_URL = "http://192.168.191.1:8080/web_home"; // public static final String BASE_URL = "http://10.0.2.2:8080/web_home"; /**
* 新闻中心的网络地址
*/
public static final String HOME_PAGER_URL = BASE_URL+"/static/api/news/categories.json";
}
2、解析Json后的实体类HomePageBean.java
package com.vitoyan.myangtzeu.pojo; import java.util.List; /**
* 作者:Vito-Yan
* 作用:新闻中心解析后对应的数据
*/
public class HomePagerBean { private List<DetailPagerData> data;
private List extend;
private int retcode; public List<DetailPagerData> getData() {
return data;
} public void setData(List<DetailPagerData> data) {
this.data = data;
} public List getExtend() {
return extend;
} public void setExtend(List extend) {
this.extend = extend;
} public int getRetcode() {
return retcode;
} public void setRetcode(int retcode) {
this.retcode = retcode;
} @Override
public String toString() {
return "NewsCenterPagerBean2{" +
"data=" + data +
", extend=" + extend +
", retcode=" + retcode +
'}';
} public static class DetailPagerData{
private int id;
private String title;
private int type;
private String url;
private String url1;
private String dayurl;
private String excurl;
private String weekurl;
private List<ChildrenData> children; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public int getType() {
return type;
} public void setType(int type) {
this.type = type;
} public String getUrl() {
return url;
} public void setUrl(String url) {
this.url = url;
} public String getUrl1() {
return url1;
} public void setUrl1(String url1) {
this.url1 = url1;
} public String getDayurl() {
return dayurl;
} public void setDayurl(String dayurl) {
this.dayurl = dayurl;
} public String getExcurl() {
return excurl;
} public void setExcurl(String excurl) {
this.excurl = excurl;
} public String getWeekurl() {
return weekurl;
} public void setWeekurl(String weekurl) {
this.weekurl = weekurl;
} public List<ChildrenData> getChildren() {
return children;
} public void setChildren(List<ChildrenData> children) {
this.children = children;
} @Override
public String toString() {
return "DetailPagerData{" +
"id=" + id +
", title='" + title + '\'' +
", type=" + type +
", url='" + url + '\'' +
", url1='" + url1 + '\'' +
", dayurl='" + dayurl + '\'' +
", excurl='" + excurl + '\'' +
", weekurl='" + weekurl + '\'' +
", children=" + children +
'}';
} public static class ChildrenData{
private int id;
private String title;
private int type;
private String url; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public int getType() {
return type;
} public void setType(int type) {
this.type = type;
} public String getUrl() {
return url;
} public void setUrl(String url) {
this.url = url;
} @Override
public String toString() {
return "ChildrenData{" +
"id=" + id +
", title='" + title + '\'' +
", type=" + type +
", url='" + url + '\'' +
'}';
}
}
}
}
3、使用xUtils3联网请求数据,使用前自行下载modules
/**
* 使用xUtils3联网请求数据
*/
private void getDataFromNet() { RequestParams params = new RequestParams(Constants.HOME_PAGER_URL);
x.http().get(params, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
long endTime = SystemClock.uptimeMillis();
long passTime = endTime - startTime; LogUtil.e("xUtils3--passTime==" + passTime); LogUtil.e("使用xUtils3联网请求成功==" + result); //缓存数据
CacheUtils.putString(context,Constants.HOME_PAGER_URL,result); //解析json数据和显示数据
processData(result); //设置适配器 } @Override
public void onError(Throwable ex, boolean isOnCallback) {
LogUtil.e("使用xUtils3联网请求失败==" + ex.getMessage());
} @Override
public void onCancelled(CancelledException cex) {
LogUtil.e("使用xUtils3-onCancelled==" + cex.getMessage());
} @Override
public void onFinished() {
LogUtil.e("使用xUtils3-onFinished");
}
}); }
4、解析Json,这里使用Gson解析
/**
* 解析json数据:1,使用系统的API解析json;2,使用第三方框架解析json数据,例如Gson,fastjson
*
* @param json
* @return
*/
private HomePagerBean parsedJson(String json) {
// Gson gson = new Gson();
// HomePagerBean bean = gson.fromJson(json,HomePagerBean.class);
return new Gson().fromJson(json, HomePagerBean.class);
}
5、解析Json数据和显示数据
/**
* 解析json数据和显示数据
*
* @param json
*/
private void processData(String json) { HomePagerBean bean = parsedJson(json);
// HomePagerBean2 bean = parsedJson2(json);
// String title = bean.getData().get(0).getChildren().get(1).getTitle(); // LogUtil.e("使用Gson解析json数据成功-title==" + title);
String title2 = bean.getData().get(0).getChildren().get(1).getTitle();
LogUtil.e("使用Gson解析json数据成功HomePagerBean2-title2-------------------------==" + title2);
//给左侧菜单传递数据
data = bean.getData(); MainActivity mainActivity = (MainActivity) context;
//得到左侧菜单
LeftmenuFragment leftmenuFragment = mainActivity.getLeftmenuFragment(); //添加详情页面
detaiBasePagers = new ArrayList<>();
detaiBasePagers.add(new NewsMenuDetailPager(context,data.get(0)));//新闻详情页面
detaiBasePagers.add(new News1MenuDetailPager(context));//新闻1详情页面
detaiBasePagers.add(new News2MenuDetailPager(context));//新闻2详情页面
detaiBasePagers.add(new News3MenuDetailPager(context));//新闻3详情页面
detaiBasePagers.add(new News4MenuDetailPager(context));//新闻4详情页面 //把数据传递给左侧菜单
leftmenuFragment.setData(data); }
6、在LeftmenuFragment中接受数据
/**
* 接收数据
* @param data
*/
public void setData(List<HomePagerBean.DetailPagerData> data) {
this.data = data;
for(int i=0;i<data.size();i++){
LogUtil.e("title=="+data.get(i).getTitle());
} //设置适配器
adapter = new LeftmenuFragmentAdapter();
listView.setAdapter(adapter); //设置默认页面
swichPager(prePosition); }
联网请求数据:Android篇的更多相关文章
- for循环中进行联网请求数据、for循环中进行异步数据操作,数据排序错乱问题解决;
for循环中进行联网请求数据,由于网络请求是异步的,第一个网络请求还没有回调,第二次第三次以及后续的网络请求又已经发出去了,有可能后续的网络请求会先回调:这时我们接收到的数据的排序就会错乱:怎么才能让 ...
- Android(或者Java)通过HttpUrlConnection向SpringMVC请求数据(数据绑定)
问题描写叙述 当我们使用SpringMVC作为服务端的框架时,有时不仅仅要应对web前端(jsp.javascript.Jquery等)的訪问请求,有时还可能须要响应Android和JavaSE(桌面 ...
- Java服务器对外提供接口以及Android端向服务器请求数据
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5056780.html 讲解下java服务器是如何对移动终端提供接口的,以什么数据格式提供出去,移动端又是怎么 ...
- [Android]解决3gwap联网失败:联网请求在设置代理与直连两种方式的切换
[Android]解决3gwap联网失败:联网请求在设置代理与直连两种方式的切换 问题现象: 碰到一个问题,UI交互表现为:联通号码在3gwap网络环境下资源一直无法下载成功. 查看Log日志,打印出 ...
- android异步向服务器请求数据
下面就android向服务器请求数据的问题分析如下: 1.在android4.0以后的版本,主线程(UI线程)不在支持网络请求,原因大概是影响主线程,速度太慢,容易卡机,所以需要开启新的线程请求数据: ...
- iOS开发之Socket通信实战--Request请求数据包编码模块
实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...
- java攻城狮之路(Android篇)--Activity生命
一:Activity的激活 1.写一个类 extends Activity Activity是android的四大组件之一.Activity的激活分为显式意图激活和隐式意图激活.如果一个activit ...
- java攻城狮之路(Android篇)--与服务器交互
一.图片查看器和网页源码查看器 在输入地址的是不能输入127.0.0.1 或者是 localhost.ScrollView :可以看成一个滚轴 可以去包裹很多的控件在里面 练习1(图片查看器): pa ...
- 简单登录案例(SharedPreferences存储账户信息)&联网请求图片并下载到SD卡(文件外部存储)
新人刚学习Android两周,写一个随笔算是对两周学习成果的巩固,不足之处欢迎各位建议和完善. 这次写的是一个简单登录案例,大概功能如下: 注册的账户信息用SharedPreferences存储: 登 ...
随机推荐
- WPF软件开发系统之五——展会展厅触摸屏企业产品宣传展示系统
本系统开发背景:上海展会多点触摸大屏(60寸以上)上互动展示. 功能包括:企业背景.产品.合作伙伴.所获荣誉等以图片.文字.视频多媒体的方式呈块状显示,亮点功能为支持多点操作去旋转.缩放.拖拽呈现各种 ...
- zabbix监控交换机状态
1.在Zabbix中添加主机 输入名称.群组和交换机IP(交换机要开启snmp) 2.创建监控项 输入OID和其它信息(键值随便填,但是不能和系统内的键值重复)OID获取方法可查看上一篇文章:http ...
- Webdriver之API详解(3)
前言 前两篇API链接 https://www.cnblogs.com/linuxchao/p/linuxchao-selenium-apione.html https://www.cnblogs.c ...
- 用css 添加手状样式,鼠标移上去变小手,变小手
用css 添加手状样式,鼠标移上去变小手,变小手 cursor:pointer; 用JS使鼠标变小手onmouseover(鼠标越过的时候) onmouseover="this.style. ...
- windows最简单的局部截图工具
大家写博客的时候应该经常要用截图吧!不知道大家用的都是什么截图工具. 1.最开始我只会键盘的printscreen截图,然后去电脑,附件,画图....总之很多步骤,贼麻烦. 2.然后用电脑玩qq的时候 ...
- 【spring源码分析】IOC容器初始化(十)
前言:前文[spring源码分析]IOC容器初始化(九)中分析了AbstractAutowireCapableBeanFactory#createBeanInstance方法中通过工厂方法创建bean ...
- 试试Linux下的ip命令,ifconfig已经过时了
linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者.使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务.ifconfig是net-tools中已被废弃使用的一个命 ...
- 如何配置jenkins 与代理服务器吗?
0 我们面临一些问题使用代理服务器(即缓存服务器)和詹金斯是希望有人可以提供如果他们有类似的设置. Herea年代简要描述的设置: 在主站点反向代理,JTS & CCM服 ...
- Python学习案例之Web版语音合成播报
前言 语音合成技术能将用户输入的文字,转换成流畅自然的语音输出,并且可以支持语速.音调.音量设置,打破传统文字式人机交互的方式,让人机沟通更自然. 应用场景 将游戏场景中的公告.任务或派单信息通过语音 ...
- centos下使用nginx 配置websocket,https升级wss协议
服务端代码/***/ // 服务端代码 var express = require('express'); var app = express(); var path = require('path' ...