[置顶] 获取网络数据中的数组显示成ListView的简单流程
首先说一下 这是我自己的个人笔记,如果想看看,不用看细节,可以看流程。
定义一个线程池 ExecutorService pool = Executors.newFixedThreadPool(15);
运用线程获取网络数据 即编辑相关的访问方法以及参数
public static String sendDataByHttpClientPost(String url,
List<NameValuePair> parameters) throws Exception { HttpClient client = new DefaultHttpClient(); client.getParams().setParameter(
CoreConnectionPNames.CONNECTION_TIMEOUT, TIME_OUT);
client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, TIME_OUT);
HttpPost httppost = new HttpPost(url); UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters,
"utf-8"); httppost.setEntity(entity);
HttpResponse ressponse = client.execute(httppost);
int code = ressponse.getStatusLine().getStatusCode(); if (code == Status.SUCCESS) {
InputStream is = ressponse.getEntity().getContent();
byte[] result = getBytes(is); return new String(result);
} else {
throw new IllegalStateException("服务器状态异常");
}
}
获得相关JSON数据进行解析,当然首先得创建一个实体类 即下面方法的参数 clazz,参数jsonStr就是获得的网络JSON数据,clazz这个就是一个数组对象了,所包含的字段,可以在实体类中定义相关的变量。
STATUS STATUS_SUCCESS INFO 这些是我自己写的相关常量
public static <T> List<T> parseList(String jsonStr, Class<T> clazz)
throws JSONException {
JSONObject json = new JSONObject(jsonStr);
String response = json.getString(STATUS);
List<T> list = new ArrayList<T>();
if (response != null && response.equals(STATUS_SUCCESS)) {
String info = json.getString(INFO);
if (!TextUtils.isEmpty(info) && !info.equals("null")) {
list = (List<T>) JSON.parseArray(info, clazz);
return list;
} else {
return list;
}
} else {
throw new IllegalStateException();
}
}
上面方法得到的就是一个我们要在ListView当中显示的数组数据。然后将它通过消息Message发送到主线程的Handler中进行处理 即
message = handler.obtainMessage(Status.SUCCESS, list);
message.sendToTarget();
SUCCESS 为自己写的常量
这样就拿到了数组了,现在的问题是,怎样实时显示到ListView当中, 步骤可以这样:
一 先定义一个类 它进行了适配器当中数据的更改、刷新 即
package com.sinosoft.foodsafemanagerv2.function.task.unionmeeting; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import android.content.Context;
import android.widget.ListView; import com.sinosoft.adpter.MySimpleAdpter;
import com.sinosoft.foodsafemanagerv2.R;
import com.sinosoft.foodsafemanagerv2.entity.Case; public class UnionRecordListView { private ListView listView;
private MySimpleAdpter myAdapter;
private ArrayList<HashMap<String, Object>> datas;
private Context context;
private String[] from; public UnionRecordListView() {
super();
} public UnionRecordListView(final Context context, ListView listView) {
this.context = context;
this.listView = listView;
from = new String[] { "img", "type_name", "time_type" };
datas = new ArrayList<HashMap<String, Object>>();
myAdapter = new MySimpleAdpter(context, datas,
R.layout.layout_recordlistview_item, from, new int[] {
R.id.imageview, R.id.name_or_type_text,
R.id.type_or_time_text });
listView.setAdapter(myAdapter);
} /**
* 设置数据
*
* @param list
*/
public void setDatas(List<Case> list) {
ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
for (Case c : list) {
HashMap<String, Object> map = new HashMap<String, Object>();
String imgs = c.getImgIds(); map.put(from[0], c.getCaseId());
map.put(from[1], c.getUnitName());
map.put(from[2], c.getTypeName()); data.add(map);
}
this.datas = data;
myAdapter.setListData(data);
myAdapter.notifyDataSetChanged();
}
}
二 这样我们就可以调用 setDatas()方法,所带的数组参数的不同,进行ListView的更新,显示不同的数据。
[置顶] 获取网络数据中的数组显示成ListView的简单流程的更多相关文章
- Android中获取网络数据时的分页加载
//此实在Fragment中实现的,黄色部分为自动加载,红色部分是需要注意的和手动加载, 蓝色部分是睡眠时间,自我感觉不用写 ,还有就是手动加载时,不知道为什么进去后显示的就是最后一行,求大神 ...
- android—获取网络数据
取网络数据主要靠发交易(或者说请求,接口等),而这些交易由java中的网络通信,HttpURLConnection和HttpClient实现,以下是具体例子. 大家都知道,网络通信,发送请求有两种 ...
- Swift实战-豆瓣电台(三)获取网络数据
观看地址:http://v.youku.com/v_show/id_XNzMwMzQxMzky.html 这节内容,我们先说了怎么将storyboard中的组件在类中进行绑定.然后写了一个类用来获取网 ...
- Http方式获取网络数据
通过以下代码可以根据网址获取网页的html数据,安卓中获取网络数据的时候会用到,而且会用Java中的sax方式解析获取到数据.(sax解析主要是解析xml)具体代码如下: package com.wy ...
- Swift - 异步获取网络数据封装类
使用NSURLConnection.sendAsynchronousRequest()可以采用异步获取的方式取得数据.下面通过对数据获取类进行封装,演示如何进行数据请求与接收. 1,HttpContr ...
- 使用NSURLSession获取网络数据和下载文件
使用NSURLSession获取网络数据 使用NSURLSession下载文件
- 使用promise方式来获取网络数据
获取网络数据 let data = []; new Promise(function(resolve,reject){ axios.post('api.php').then(function(resp ...
- ListView获取网络数据并展示优化练习
权限: <uses-permission android:name="android.permission.INTERNET"></uses-permission ...
- aspxgridview export导出数据,把true显示成‘是’
项目原因,数据库中的数据是‘true’还有‘false’,但是在页面上要显示为‘是否’,导出来的时候也是要显示成‘是否’ 要在web页面当中显示成‘是否’,只要在gridview的CustomColu ...
随机推荐
- 在IP网络中,P、PE、CE代表意思
1.ce , pe属于mpls vpn里的概念.VPN概念中,把整个网络中的路由器分为三类:用户边缘路由器(CE).运营商边缘路由器(PE)和运营商骨干路由器(P):其中,PE充当IP VPN接入路由 ...
- 哪些intel 网卡支持SR-IOV
哪些英特尔®以太网适配器和控制器支持 SR-IOV? 英特尔®以太网融合网络适配器 X710 系列 英特尔®以太网聚合网络适配器 X710-da2 英特尔®以太网聚合网络适配器 X710-da4 英特 ...
- Autel MaxiSys MS906TS tire pressure settings Lexus LS460h
Use AUTEL MaxiSYS MS906TS error reader to install tire pressure Lexus LS460h in Vung Tau. Make : Lex ...
- 抽屉效果几大github第三方库
首先感谢董铂然博客园,鄙人收藏学习之用,如有朋友看到.有需要请直接前往董铂然博客园本文, 请点击查看原文 在公司项目新版本方案选择中,对主导航中要使用的抽屉效果进行了调研.主要原因是旧的项目中所用的库 ...
- Scrapy框架学习笔记
1.Scrapy简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网 ...
- postfix 如何设置邮件头翻译的功能
开始按http://semi-legitimate.com/blog/item/how-to-rewrite-outgoing-address-in-postfix 博客中的方法进行设置,是可以替换, ...
- Codeforces 798C. Mike and gcd problem 模拟构造 数组gcd大于1
C. Mike and gcd problem time limit per test: 2 seconds memory limit per test: 256 megabytes input: s ...
- 编程学习笔记(第四篇)面向对象技术高级课程:绪论-软件开发方法的演化与最新趋势(4)meta、元与元模型、软件方法的未来发展
一.meta.元与元模型 1.元. "元" 英语是 Meta,meta在不同的行业领域有不同的翻译,在 IT 领域一般来说 Meta 是翻译成元,主要因为在 IT 中Meta ...
- sqli-labs:18-22,http头部注入
sqli18: uname和passwd被处理了: uagent和ip插入到了数据库: 还带回显. 抓包改包 sqli19: null sqli20: 审计代码,大概如下 当我们正常登录后userna ...
- BS架构如何实现即时消息提醒
转载地址:https://blog.csdn.net/cyjch/article/details/51506434