ListView加载网络数据和图片(补足六个汉字).doc
文本预览下载声明
ListView加载网络数据和图片
如,从服务器端获得商品名称、价格、简介和图片,加载到Android ListView中。又如加载微博内容。
需了解熟悉:
1、ListView行布局,排版,getView方法
这个案例可以说是实现ListView图文混排的网络版。关于在ListView中实现排版的方法,参 考:HYPERLINK /ppy2790@126/blog/static/1032422412013731115643829/
2、异步任务的实现,Handler+Thread , AsyncTask
3、JSON解析方式
实现思路:
1、异步加载服务器访问商品数据(json格式)
封装网络访问的方法
2、json数据转为Adapter数据(ListMapString,Object)
封装数据转换的方法
3、Adapter先加载文本内容信息
使用AsyncTask加载网络访问的集合数据
加载ListView中的文本信息
4、json数据中有图片信息(路径),异步读取加载图片
采用接口回调的方法,加载图片信息(Handler+Thread)
public class HttpUtil {
public static final String BASE_URL = HYPERLINK :8080/jsontest/servlet/ProductServlet:8080/jsontest/servlet/ProductServlet;
public static final String IMG_URL = HYPERLINK :8080/jsontest/upload/:8080/jsontest/upload/;
public static HttpClient httpClient = new DefaultHttpClient();
// post方法访问服务器,返回json字符串
public static String getRequest(String url){
String result = null;
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse httpResponse = httpClient.execute(httpGet);
if (httpResponse.getStatusLine().getStatusCode() == 200) {
result = EntityUtils.toString(httpResponse.getEntity(),utf-8);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
// 字符串转成集合数据
public static void resultString2List(ListMapString ,Object list, String str,String title) {
try {
JSONObject jsonObject = new JSONObject(str);
JSONArray jsonArray = jsonObject.getJSONArray(title);
for (int i = 0; i jsonArray.length(); i++) {
JSONObject jsonObject2 = jsonArray.getJSONObject(i);
MapString ,Object map = new HashMapString, Object();
IteratorString iterator = jsonObject2.keys();
while (iterator.hasNext()) {
String key = iterator.next();
Object value = jsonObject2.get(key);
map.put(key, value);
}
list.add(map);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// post方法访问服务器,返回集合数据
public static ListMapString,Object getRequest2List(String url,String title){
ListMapString,Object li
显示全部