首页 > 网站 > 建站经验 > 正文

Android:多线程之图文!混排

2019-11-02 15:03:18
字体:
来源:转载
供稿:网友

 数据准备

  本案例中的服务端数据以Json的形式传递,在服务端使用.Net开发一个一般处理程序,序列化一个产品对象,里面包含名称、价格、图片名称,最后序列化成JSON格式的数据返回给客户端。

  数据如下

1 [{"imageName":"image1.png","name":"苹果","price":12},2 {"imageName":"image2.png","name":"闹钟","price":56},3 {"imageName":"image3.png","name":"蛋糕","price":24},4 {"imageName":"image4.png","name":"零钱包","price":8},5 {"imageName":"image5.png","name":"书本","price":42},6 {"imageName":"image6.png","name":"糖果","price":16},7 {"imageName":"image7.png","name":"西瓜","price":2}]

  本案例的URL地址均使用一个CommonUri类进行管理:

1 package com.example.handlerimageortext;2 3 public class CommonUri {4     // 访问服务器数据的链接5     public static final String PRODUCT_URL = "http://192.168.1.102:1231/json/returnCommondityJson.ashx";6     // 图片的连接7     public static final String PRODUCT_IMG="http://192.168.1.102:1231/json/img/";8 }

  

使用AsyncTask获取Json数据

  在UI线程中,使用AsyncTask的方式访问网络获取JSON数据,并对其进行解析

 1     public class MyTask extends AsyncTask<String, Void, List<Map<String,Object>>>{ 2         @Override 3         protected void onPreExecute() { 4             super.onPreExecute(); 5             // 显示对话框 6             dialog.show(); 7         } 8          9         @Override10         protected List<Map<String, Object>> doInBackground(String... params) {11             List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();12             try {13                 // 获取网络JSON格式数据14                 HttpClient httpClient=new DefaultHttpClient();15                 HttpPost httpPost=new HttpPost(params[0]);16                 HttpResponse httpResponse=httpClient.execute(httpPost);17                 if(httpResponse.getStatusLine().getStatusCode()==200){18                     String jsonString=EntityUtils.toString(httpResponse.getEntity(),"utf-8");19                     // 解析Json格式数据,并使用一个List<Map>存放20                     JSONArray jsonArray=new JSONArray(jsonString);21                     for(int i=0;i<jsonArray.length();i++){22                         JSONObject jsonObject=jsonArray.getJSONObject(i);23                         Map<String,Object> map=new HashMap<String, Object>();24                         map.put("name",jsonObject.get("name"));25                         map.put("price",jsonObject.get("price"));26                         map.put("imageName",jsonObject.get("imageName"));27                         list.add(map);28                     }29                 }30             } catch (Exception e) {31                 e.printStackTrace();32             }33             return list;34         }35         @Override36         protected void onPostExecute(List<Map<String, Object>> result) {37             super.onPostExecute(result);38             // 把查询到的数据传递给适配器39             adapter.setData(result);40             // 为ListView设定适配器41             listview.setAdapter(adapter);42             adapter.notifyDataSetChanged();43             // 隐藏对话框44             dialog.dismiss();45         }        46     }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表