好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

ListView加载网络数据和图片.doc

8页
  • 卖家[上传人]:cl****1
  • 文档编号:547706450
  • 上传时间:2024-01-22
  • 文档格式:DOC
  • 文档大小:218KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • ListView加载网络数据和图片 如,从服务器端获得商品名称、价格、简介和图片,加载到Android ListView中又如加载微博内容需了解熟悉:1、ListView行布局,排版,getView方法这个案例可以说是实现ListView图文混排的网络版关于在ListView中实现排版的方法,参 考:2、异步任务的实现,Handler+Thread , AsyncTask3、JSON解析方式实现思路:1、异步加载服务器访问商品数据(json格式) 封装网络访问的方法2、json数据转为Adapter数据(List>) 封装数据转换的方法3、Adapter先加载文本内容信息 使用AsyncTask加载网络访问的集合数据 加载ListView中的文本信息4、json数据中有图片信息(路径),异步读取加载图片 采用接口回调的方法,加载图片信息(Handler+Thread)public class HttpUtil {public static final String BASE_URL = "http://10.0.2.2:8080/jsontest/servlet/ProductServlet";public static final String IMG_URL = "http://10.0.2.2: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(List> 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 List> getRequest2List(String url,String title){List> list = new ArrayList>();resultString2List(list, url, title);return list;}// get方法访问服务器,返回json字符串public static String postRequest(String url, Map rawParams) throws Exception{HttpPost 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 AsyncTask>>{@Overrideprotected void onPreExecute() {// TODO Auto-generated method stubsuper.onPreExecute();progressDialog.show();}@Overrideprotected void onPostExecute(List> result) {// TODO Auto-generated method stubsuper.onPostExecute(result);adapter.setData(result);listview.setAdapter(adapter);adapter.notifyDataSetChanged();progressDialog.dismiss();}@Overrideprotected List> doInBackground(String... params) {// TODO Auto-generated method stubList> list ;String str = HttpUtil.getRequest(params[0]);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 BaseAdapter{private Context context;private LayoutInflater layoutInflater;private List> list;public MyAdapter(Context context) {this.context = context;layoutInflater = layoutInflater.from(context);}public List getData(){return list;}public void setData(List> 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);viewHolder.name = (TextView)convertView.findViewById(R.id.textView2);viewHolder.address = (TextView)convertView.fi。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.