




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ListView加载网络数据和图片 如,从服务器端获得商品名称、价格、简介和图片,加载到Android ListView中。又如加载微博内容。需了解熟悉:1、ListView行布局,排版,getView方法这个案例可以说是实现ListView图文混排的网络版。关于在ListView中实现排版的方法,参 考:2、异步任务的实现,Handler+Thread , AsyncTask3、JSON解析方式实现思路:1、异步加载服务器访问商品数据(json格式) 封装网络访问的方法2、json数据转为Adapter数据(ListMap) 封装数据转换的方法3、Adapter先加载文本内容信息 使用AsyncTask加载网络访问的集合数据 加载ListView中的文本信息4、json数据中有图片信息(路径),异步读取加载图片 采用接口回调的方法,加载图片信息(Handler+Thread)public class HttpUtil public static final String BASE_URL = :8080/jsontest/servlet/ProductServlet;public static final String IMG_URL = :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 blocke.printStackTrace(); return result; / 字符串转成集合数据public static void resultString2List(ListMap 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);Map map = new HashMap();Iterator 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 blocke.printStackTrace(); / post方法访问服务器,返回集合数据public static ListMap getRequest2List(String url,String title)ListMap list = new ArrayListMap();resultString2List(list, url, title);return list;/ get方法访问服务器,返回json字符串public static String postRequest(String url, Map rawParams) throws ExceptionHttpPost post = new HttpPost(url);List params = new ArrayList();for (String key:rawParams.keySet() params.add(new BasicNameValuePair(key, rawParams.get(key);post.setEntity(new UrlEncodedFormEntity(params, UTF-8);HttpResponse httpResponse = httpClient.execute(post);if(httpResponse.getStatusLine().getStatusCode() = 200)String result = EntityUtils.toString(httpResponse.getEntity(); return result;return null; /post访问的方法,还可继续封装,略。异步任务,得到网络json转换的集合数据,并在完成后加载到listview中(onPostExcute方法中执行)public class MyTask extends AsyncTaskString, Void, ListMapOverrideprotected void onPreExecute() / TODO Auto-generated method stubsuper.onPreExecute();progressDialog.show();Overrideprotected void onPostExecute(ListMap result) / TODO Auto-generated method stubsuper.onPostExecute(result);adapter.setData(result);listview.setAdapter(adapter);adapter.notifyDataSetChanged();progressDialog.dismiss();Overrideprotected ListMap doInBackground(String. params) / TODO Auto-generated method stubListMap list ;String str = HttpUtil.getRequest(params0);list = HttpUtil.getRequest2List(str, products);return list;OnCreate()方法中启动异步任务:progressDialog = new ProgressDialog(this);progressDialog.setTitle(正在下载.);adapter = new MyAdapter(this);new MyTask().execute(HttpUtil.BASE_URL);Adapter:public class MyAdapter extends BaseAdapterprivate Context context;private LayoutInflater layoutInflater;private ListMap list;public MyAdapter(Context context) this.context = context;layoutInflater = layoutInflater.from(context);public List getData()return list;public void setData(ListMap data)this.list = data;Overridepublic int getCount() / TODO Auto-generated method stubreturn list.size();Overridepublic Object getItem(int position) / TODO Auto-generated method stubreturn list.get(position);Overridepublic long getItemId(int position) / TODO Auto-generated method stubreturn position;Overridepublic View getView(int position, View convertView, ViewGroup parent) / TODO Auto-generated method stubView view = null;final ViewHolder viewHolder;if (convertView = null ) convertView = layoutInflater.inflate(R.layout.item, null);viewHolder = new ViewHolder();viewHolder.id = (TextView)convertView.findViewById(R.id.textView1);viewH = (TextView)convertView.findViewById(R.id.textView2);viewHolder.address = (TextView)convertView.findViewById(R.id.textView3);viewHolder.img = (ImageView)convertView.findViewById(R.id.imageView1);convertView.setTag(viewHolder);elseviewHolder = (ViewHolder)convertView.getTag();viewHolder.id.setText(list.get(position).get(sid).toString();viewH.setText(list.get(position).get(name).toString();viewHolder.address.setText(list.get(position).get(addr).toString();/接口回调的方法,完成图片的读取;DownImage downImage = new DownImage(HttpUtil.IMG_URL+list.get(position).get(pic).toString()+.jpg);downImage.loadImage(new ImageCallBack() Overridepublic void getDrawable(Drawable drawable) / TODO Auto-generated method stubviewHolder.img.setImageDrawable(drawable););return convertView;public class ViewHolderImageView img;TextView id;TextView name;TextView address;异步加载图片的类:public class DownImage public String image_path;public DownImage(String image_path) this.image_path = image_path;public void loadImage(final ImageCallBack callBack)final Handler handler = new Handler()Overridepublic void handleMessage(Message msg) / TODO Auto-generated method stubsuper.handleMessage(msg);Drawable drawable = (Drawable) msg.obj;callBack.getDrawable(drawable);new Thread(new Runnable() Overridepublic void run() / TODO Auto-generated method stubtry Drawable drawable = Drawable.createFromStream(new URL(image_path).openStream(), );Message message = Message.obtain();message.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临时性建筑施工方案
- 长治网络营销策划方案
- 商场封闭管理应急预案方案
- 庆阳铁艺大门施工方案
- 建筑方案设计标评审表
- 美术教学活动策划方案格式
- 孔府建筑配色方案设计理念
- 中学绿色建筑方案设计意图
- 安顺咨询网络推广方案
- 社区记忆建筑方案设计案例
- GB 23466-2025听力防护装备的选择、使用和维护
- 人教PEP版(2024)四年级上册英语-Unit 3 Places we live in 单元整体教学设计(共6课时)
- 华为信息安全管理培训课件
- 贵阳市殡仪服务中心招聘考试真题2024
- 重庆市危险化学品企业变更管理实施指南(试行)解读2025.7.25
- 煤改电工程施工质量监控方案和措施
- 布病的护理教学课件
- (2025年标准)预售小麦协议书
- 2025年院感测试题及答案
- 2025年全国保密教育线上培训考试试题库完整答案附带答案详解
- 全套教学课件《工程伦理学》
评论
0/150
提交评论