文档章节

Handler配合数据下载,网上下载并解析JSON的例子(18)

f
 flyqilong
发布于 2016/02/27 21:26
字数 435
阅读 18
收藏 0
点赞 1
评论 0
public class MainActivity extends Activity {
	private ListView listview;
	private ProgressDialog dialog;
	private String url = "http://m2.qiushibaike.com/article/list/suggest?page=1";
	Handler handler = new Handler() {
		public void handleMessage(android.os.Message msg) {
			switch (msg.what) {
			case 0:
				dialog.show();
				break;
			case 1:
				List<Map<String, Object>> list=(List<Map<String, Object>>) msg.obj;
				listview.setAdapter(new MyBaseAdapter(list));
				break;
			case 2:
				dialog.dismiss();
				break;
			}
		};
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		listview = (ListView) this.findViewById(R.id.newslistView);
		dialog = new ProgressDialog(this);
		dialog.setIcon(R.drawable.ic_launcher);
		dialog.setTitle("提示: ");
		dialog.setMessage("正在下载!..o..!");
		new Thread(new Runnable() {

			@Override
			public void run() {
				handler.sendEmptyMessage(0);// 显示对话框
				String json = loadUrlJson(url);
				List<Map<String, Object>> list = parseJOSN(json);
				Message message = Message.obtain();
				message.what = 1;
				message.obj = list;
				handler.sendMessage(message);
				handler.sendEmptyMessage(2);// 关闭对话框

			}

		}).start();
	}

	// 下载字符串
	public String loadUrlJson(String url) {
		try {
			HttpClient client = new DefaultHttpClient();
			HttpGet get = new HttpGet(url);
			HttpResponse response = client.execute(get);
			if (response.getStatusLine().getStatusCode() == 200) {
				return EntityUtils.toString(response.getEntity(), "UTF-8");

			}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		return null;
	}

	// JSON解析
	public List<Map<String, Object>> parseJOSN(String json) {
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
		try {
			JSONObject jsonObject = new JSONObject(json);
			JSONArray jsonarray = jsonObject.getJSONArray("items");
			for (int i = 0; i < jsonarray.length(); i++) {
				Map<String, Object> itemMap = new HashMap<String, Object>();
				JSONObject jsonItems = jsonarray.getJSONObject(i);
				itemMap.put("image", jsonItems.getString("image"));
				itemMap.put("content", jsonItems.getString("content"));
				itemMap.put("comments_count",
						jsonItems.getString("comments_count"));
				JSONObject loginObj = jsonItems.getJSONObject("user");
				if(loginObj!=null){
					itemMap.put("login", loginObj.getString("login"));		
				}else{
					itemMap.put("login", "");	
				}

				list.add(itemMap);

			}

		} catch (JSONException e) {
			e.printStackTrace();
		}

		return list;
	}

	class MyBaseAdapter extends BaseAdapter {
		private List<Map<String, Object>> list;

		public MyBaseAdapter(List<Map<String, Object>> list) {
			this.list = list;
		}

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

		@Override
		public Object getItem(int position) {
			return this.list.get(position);
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ViewHolder holder = null;
			if (convertView == null) {
				holder = new ViewHolder();
				convertView = getLayoutInflater().inflate(
						R.layout.item_listview_main, null);
				ImageView imageView_cover = (ImageView) convertView
						.findViewById(R.id.imageView_cover);
				TextView text_login = (TextView) convertView
						.findViewById(R.id.text_login);
				TextView text_content = (TextView) convertView
						.findViewById(R.id.text_content);
				TextView text_commentscount = (TextView) convertView
						.findViewById(R.id.text_commentscount);
				holder.imageView_cover = imageView_cover;
				holder.text_login = text_login;
				holder.text_content = text_content;
				holder.text_commentscount = text_commentscount;
				convertView.setTag(holder);
			} else {
				holder = (ViewHolder) convertView.getTag();
			}
			holder.imageView_cover.setImageResource(R.drawable.ic_launcher);
			holder.text_login.setText(this.list.get(position).get("login")
					.toString());
			holder.text_content.setText(this.list.get(position).get("content")
					.toString());
			holder.text_commentscount.setText(this.list.get(position)
					.get("comments_count").toString());
			return convertView;
		}

		class ViewHolder {
			private ImageView imageView_cover;
			private TextView text_login;
			private TextView text_content;
			private TextView text_commentscount;

		}
	}
}


© 著作权归作者所有

共有 人打赏支持
f
粉丝 3
博文 93
码字总数 53900
作品 0
Android工程师
[工具安装使用] [okHttp] okHttp client测试用例

说明: 之前此工程是用于测试webView的,所以工程名不是叫okHttpClient. Server之前文章已经有提到如何搭建了,见 Windows上Apache服务器的下载和安装 流程是从apache server读取一个文件jso...

kris_fei
05/11
0
0
JSON 下载和解析--ExerJSON

ExerJSON为网络异步下载并解析JSON数据。使用ASIHTTPRequest、SBJSON和SDWebImage库。

红薯
2014/09/29
1K
1
Java微信支付申请退款

一、申请退款内容 1.证书使用 申请退款是需要证书的。 证书名字:证书使用中,说明了Java使用的是第一种:pkcs12格式的apiclient_cert.p12。 下载证书:微信商户平台-->账户设置-->API安全-...

ioufev
2016/11/08
639
0
原 ASP.NET如何使用JSON

发表于2年前(2012-06-26 11:28) 阅读(2597) | 评论(2) 4人收藏此文章, 我要收藏 赞0 ASP.NET JSON Newtonsoft.Json.dll 关于json,有一个官网:http://www.json.org 上面介绍了每种语言生...

波利beryl
2014/11/10
0
0
ASP.NET如何使用JSON

关于json,有一个官网:http://www.json.org 上面介绍了每种语言生成json格式的类库,我们只要把他们下载解压之后调用他们其中的组件即可,在.net中我用的是Newtonsoft.Json.dll这个组件,这...

阿拉赛
2012/06/26
0
2
go提交json、获取json、解析json

猜你喜欢 Go语言的Json管理模式 golang json string remove field [笔记] Golang JSON go: json解析库go-simplejson使用 Golang 1.6: 数据库NULL值遇到JSON和模板(Template) beego下ie提示下...

d_watson
2016/05/24
43
0
在JFinal的Controller中接收json数据

JFinal中接收URL中的参数或者model中的参数是很方便的,但是对于web2.0的网站来说,经常会以json方式提交比较复杂的数据,比如一个查询,包含了各种过滤条件和排序分页,前端脚本可能提交的数...

BoyTNT
2015/09/25
0
0
使用Android API最佳实践

本文由 伯乐在线 - imesong 翻译自 meetme。欢迎加入Android小组。转载请参见文章末尾处的要求。 写在前面 现在,Android应用程序中集成第三方API已十分流行。应用程序都有自己的网络操作和缓...

mingxun
2014/04/17
0
0
项目开发总结

项目开发关键词: (设计层面) : 表设计 表间关系设计 (技术层面) : 不同数据类型的获取,转换,传递(字符型 , 数值型 , 日期型 , 文件型 ) 前端:(不同数据类型(字符型 , 数值型 , 日期型 , 文件...

noteman
2015/12/16
35
0
iOS网络编程:网络交互数据格式解析之json

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,目前在网络交互过程中有着举足轻重的地位。如果您对 json 还有什么不清楚的话建议去看 json百度百科。 在iOS平台上,Apple 从...

GavinZhang
2013/01/15
0
2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

页面输出JSON格式数据

package com.sysware.utils;import java.io.IOException;import javax.servlet.ServletResponse;import org.apache.log4j.Logger;import com.sysware.SyswareConstant;pub......

AK灬
14分钟前
0
0
springCloud-2.搭建Eureka Client的使用

1.使用IDEA,Spring Initializr创建 2.填写项目资料 3.选择spring boot版本,插件选择Cloud Discovery→Eureka Discovery 4.选择保存地址 5.修改application.yml eureka: client: s...

贺小康
17分钟前
0
0
CenOS 6.5 RPM 安装 elasticsearch 6.3.1

下载 wget --no-check-certificate https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.rpm...

阿白
20分钟前
0
0
1.4 创建虚拟机&1.5 安装CentOS7&1.6 配置ip(上)&1.7 配置ip(下)

1.4 创建虚拟机 知识点 虚拟机网络链接模式 桥连 直接将虚拟网卡桥接到一个物理网卡上面。需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主...

小丑鱼00
26分钟前
0
0
TrustAsia(亚洲诚信)助力看雪2018安全开发者峰会

2018年7月21日,看雪2018安全开发者峰会在北京国家会议中心圆满落下帷幕。拥有18年悠久历史的老牌安全技术社区——看雪学院联手国内最大开发者社区CSDN,汇聚业内顶尖的安全开发者和技术专家...

亚洲诚信
27分钟前
0
0
Spring注解介绍

@Resource、@AutoWired、@Qualifier 都用来注入对象。其中@Resource可以以 name 或 type 方式注入,@AutoWired只能以 type 方式注入,@Qualifier 只能以 name 方式注入。 但它们有一些细微区...

lqlm
37分钟前
0
0
32位汇编在64位Ubuntu上的汇编和连接

本教程使用的操作系统是Ubuntu Linux 18.04 LTS版本,汇编器是GNU AS(简称as),连接器是GNU LD(简称ld)。 以下是一段用于检测CPU品牌的汇编小程序(cpuid2.s): .section .dataoutput...

ryanliue
47分钟前
0
0
CentOS系统启动报错Failed to mount /sysroot解决方法

xfs_repair -v -L /dev/dm-0

Mr_Tea伯奕
今天
1
0
美团点评云真机平台实践

背景 随着美团点评业务越来越多,研发团队越来越庞大,对测试手机的需求显著增长。这对公司来说是一笔不小的开支,但现有测试手机资源分配不均,利用率也非常有限,导致各个团队开发、测试过...

美团技术团队
今天
0
0
eclipse SVN 项目重新定位

SVN 重新定位 1.方法一 首先:在Eclipse中选择Windows-> Show View->others 就会出现【SVN资源库/SVN Repositories】,选中后,点击确认; 然后:选中原有的地址,选择【重新定位/Relocate】...

qimh
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部