Android网络取数据显示到ListView实例
2015-08-12 18:58
561 查看
package com.example.network; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.example.network.ConnectionUtils.CallConnectionInterface; import com.example.network.ConnectionUtils.Method; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; public class NetworkListActivity extends Activity { private ListView mListView; private String url = "http://192.168.1.203/json/around"; private AsyncLoaderImage asyncLoaderImage ; private ArrayList<ContentBean> list = new ArrayList<ContentBean>(); private MybaseAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { getWindow().requestFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = (ListView) findViewById(R.id.networklist); adapter = new MybaseAdapter(this); mListView.setAdapter(adapter); ConnectionUtils connectionUtils = new ConnectionUtils(); connectionUtils.asyncTaskConnection(url, null, Method.GET, new CallConnectionInterface() { @Override public void executeResult(String result) { Log.v("TAG", "result" + result); try { JSONObject jsonObject = new JSONObject(result); JSONObject info = jsonObject.getJSONObject("info"); JSONArray merchantKey = info .getJSONArray("merchantKey"); int length = merchantKey.length(); for (int i = 0; i < length; i++) { JSONObject obj = merchantKey.getJSONObject(i); String name = obj.getString("name"); String coupon = obj.getString("coupon"); String location = obj.getString("location"); String distance = obj.getString("distance"); String picUrl = obj.getString("picUrl"); String couponType = obj.getString("couponType"); String cardType = obj.getString("cardType"); String groupType = obj.getString("groupType"); ContentBean content = new ContentBean(); content.setName(name); content.setCoupon(coupon); content.setLocation(location); content.setDistance(distance); content.setPicUrl(picUrl); content.setCouponType(couponType); content.setCardType(cardType); content.setGroupType(groupType); list.add(content); } adapter.setAdapterData(list); } catch (JSONException e) { e.printStackTrace(); } } }); } private class MybaseAdapter extends BaseAdapter { private ArrayList<ContentBean> list = new ArrayList<ContentBean>(); private LayoutInflater mInflater; public MybaseAdapter(Context context) { mInflater = LayoutInflater.from(context); } public void setAdapterData(ArrayList<ContentBean> list) { this.list = list; notifyDataSetChanged(); } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { final ViewHolder viewholder; if (convertView == null) { convertView = mInflater.inflate(R.layout.list_item_layout, null); viewholder = new ViewHolder(); viewholder.name = (TextView) convertView.findViewById(R.id.item_title); viewholder.coupon = (TextView) convertView.findViewById(R.id.item_favorable); viewholder.pic = (ImageView) convertView.findViewById(R.id.item_icon); viewholder.location=(TextView) convertView.findViewById(R.id.item_address); viewholder.distance=(TextView) convertView.findViewById(R.id.item_distance); viewholder.couponType=(ImageView) convertView.findViewById(R.id.item_identification); viewholder.cardType=(ImageView) convertView.findViewById(R.id.item_couponType); viewholder.groupType=(ImageView) convertView.findViewById(R.id.item_groupType); convertView.setTag(viewholder); } else { viewholder = (ViewHolder) convertView.getTag(); } ContentBean content = (ContentBean) getItem(position); viewholder.name.setText(content.getName()); viewholder.coupon.setText(content.getCoupon()); viewholder.location.setText(content.getLocation()); viewholder.distance.setText(content.getDistance()); String picUrl = content.getPicUrl(); String couponType=content.getCouponType(); String cardType=content.getCardType(); String groupType=content.getGroupType(); if(couponType.equals("YES")){ viewholder.couponType.setVisibility(View.VISIBLE); }else{ viewholder.couponType.setVisibility(View.GONE); } if(cardType.equals("YES")){ viewholder.cardType.setVisibility(View.VISIBLE); }else{ viewholder.cardType.setVisibility(View.GONE); } if(groupType.equals("YES")){ viewholder.groupType.setVisibility(View.VISIBLE); }else{ viewholder.groupType.setVisibility(View.GONE); } // asyncLoaderImage= AsyncLoaderImage.getInstanceAsyncLoaderImage(); // asyncLoaderImage.loadBitmap(getResources(), picUrl, viewholder.pic); new AsyncTask<String, Void, Bitmap>() { @Override protected Bitmap doInBackground(String... params) { String httpUrl = params[0]; Bitmap bitmap = getBitmapByNetwork(httpUrl); return bitmap; } @Override protected void onPostExecute(Bitmap result) { if (result != null) viewholder.pic.setImageBitmap(result); } }.execute(picUrl); return convertView; } private class ViewHolder { TextView name; TextView coupon; TextView location; TextView distance; ImageView pic; ImageView couponType; ImageView cardType; ImageView groupType; } } private class ContentBean { private String name; private String coupon; private String location; private String distance; private String picUrl; private String couponType; private String cardType; private String groupType; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCoupon() { return coupon; } public void setCoupon(String coupon) { this.coupon = coupon; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } public String getDistance() { return distance; } public void setDistance(String distance) { this.distance = distance; } public String getPicUrl() { return picUrl; } public void setPicUrl(String picUrl) { this.picUrl = picUrl; } public String getCouponType() { return couponType; } public void setCouponType(String couponType) { this.couponType = couponType; } public String getCardType() { return cardType; } public void setCardType(String cardType) { this.cardType = cardType; } public String getGroupType() { return groupType; } public void setGroupType(String groupType) { this.groupType = groupType; } } private Bitmap getBitmapByNetwork(String httpurl) { InputStream in = null; try { URL url = new URL(httpurl); in = url.openStream(); Bitmap bitmap = BitmapFactory.decodeStream(in); return bitmap; } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } }
主页面Xml布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/light_grey_white" android:orientation="vertical" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" > <ImageView android:id="@+id/title_btn_back" android:layout_width="30dp" android:layout_height="30dp" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:src="@drawable/btn_back" /> <TextView android:id="@+id/title_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:layout_toRightOf="@id/title_btn_back" android:text="@string/My_Watchlist" android:textSize="20sp" /> </RelativeLayout> <View android:layout_width="match_parent" android:layout_height="2dp" android:background="@color/darker_gray" /> <ListView android:id="@+id/networklist" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="10dp" android:dividerHeight="10dp" > </ListView> </LinearLayout>
ListView单项布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" > <ImageView android:id="@+id/item_icon" android:layout_width="80dp" android:layout_height="80dp" android:background="@drawable/meituan_image1" /> <ImageView android:id="@+id/item_identification" android:layout_width="20dp" android:layout_height="20dp" android:layout_alignParentRight="true" android:background="@drawable/near_card" android:visibility="invisible" /> <ImageView android:id="@+id/item_couponType" android:layout_width="20dp" android:layout_height="20dp" android:layout_toLeftOf="@id/item_identification" android:background="@drawable/near_ticket" android:visibility="invisible" /> <ImageView android:id="@+id/item_groupType" android:layout_width="20dp" android:layout_height="20dp" android:layout_toLeftOf="@id/item_couponType" android:background="@drawable/near_group" android:visibility="invisible" /> <TextView android:id="@+id/item_title" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_toLeftOf="@id/item_groupType" android:layout_toRightOf="@id/item_icon" android:ellipsize="end" android:singleLine="true" android:textSize="16sp" android:text="皇家肥牛特色火锅新会展店 " /> <TextView android:id="@+id/item_favorable" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/item_title" android:layout_marginLeft="10dp" android:layout_toRightOf="@id/item_icon" android:ellipsize="end" android:singleLine="true" android:text="189元享5人豪华套餐 " android:textColor="@android:color/holo_red_light" android:textSize="14sp" /> <TextView android:id="@+id/item_distance" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@id/item_icon" android:layout_alignParentRight="true" android:text="2.0km" android:textColor="@android:color/darker_gray" android:textSize="10sp"/> <ImageView android:id="@+id/item_info" android:layout_width="15dp" android:layout_height="15dp" android:layout_alignBottom="@id/item_distance" android:layout_toLeftOf="@id/item_distance" android:background="@drawable/info_map" /> <TextView android:id="@+id/item_address" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignBottom="@id/item_icon" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_toLeftOf="@id/item_info" android:layout_toRightOf="@id/item_icon" android:ellipsize="end" android:singleLine="true" android:text="四川省成都市高新区天府大道中段" android:textColor="@android:color/darker_gray" android:textSize="12sp" /> </RelativeLayout>
获取网络资源封装的类
package com.scxh.android.networkconnections; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Set; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import android.os.AsyncTask; public class ConnectionUtils { public enum Method { GET, POST } // 实现接口回调 第一步定义接�? public interface CallConnectionInterface { public void executeResult(String result); } // 实现接口回调 第二�?声明接口,定义注册接口入�? public CallConnectionInterface mCallConnectionInterface; // public void setonCallConnectionInterface( // CallConnectionInterface callConnectionInterface) { // mCallConnectionInterface = callConnectionInterface; // } // // public ConnectionUtils(CallConnectionInterface callConnectionInterface) { // mCallConnectionInterface = callConnectionInterface; // } public void asyncTaskConnection(final String url, final HashMap<String, String> parameterMap, final Method method, CallConnectionInterface callConnectionInterface) { mCallConnectionInterface = callConnectionInterface; new AsyncTask<Void, Void, String>() { protected String doInBackground(Void[] params) { String result = ""; try { result = getHttpConnection(url, parameterMap, method); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); // ====第三�?调用接口方法 mCallConnectionInterface.executeResult(result); } }.execute(); } public String getHttpConnection(String url, HashMap<String, String> parameterMap, Method httpMethod) throws ClientProtocolException, IOException { HttpClient httpClient = new DefaultHttpClient(); HttpUriRequest request = getHttpUrlRequest(url, parameterMap,httpMethod); HttpResponse response = httpClient.execute(request); int statusCode = response.getStatusLine().getStatusCode(); if (statusCode == HttpStatus.SC_OK) { String content = EntityUtils.toString(response.getEntity(),"utf-8"); return content; } else { return "请服务端出错"; } } public HttpUriRequest getHttpUrlRequest(String url, HashMap<String, String> parameterMap, Method method) throws ClientProtocolException, IOException { if (method == Method.POST) { HttpPost httpPost = new HttpPost(url); // =========================组装Post参数==================== ArrayList<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>(); Set<String> set = parameterMap.keySet(); Iterator<String> iterator = set.iterator(); while (iterator.hasNext()) { String key = iterator.next(); String name = parameterMap.get(key); System.out.println("key " + key + "name :" + name); BasicNameValuePair namePair = new BasicNameValuePair(key, name); parameters.add(namePair); } UrlEncodedFormEntity entity = new UrlEncodedFormEntity(parameters, HTTP.UTF_8); httpPost.setEntity(entity); httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); return httpPost; } else { if (parameterMap != null) { // ================组装Get请求参数=============================== // String url = // "http://192.168.1.203/web1502/login_servle?userName=张三&passWord=123"; if (url.indexOf("?") < 0) { url = url + "?"; } Set<String> set = parameterMap.keySet(); Iterator<String> iterator = set.iterator(); while (iterator.hasNext()) { String key = iterator.next(); String name = parameterMap.get(key); System.out.println("key " + key + "name :" + name); url = url + "&" + key + "=" + name; } // ================组装Get请求参数=============================== } HttpGet httpGet = new HttpGet(url); return httpGet; } } }
实现效果图
相关文章推荐
- 卷积神经网络(CNN)笔记
- TCP/IP、Http、Socket的区别
- Http 异步批量下载图片之优化
- IOS--http状态码快速查看
- iOS安全系列之 HTTPS
- android中Http和HttpClient的Get和Post方法的使用
- http异步大量图片下载,并用GridView显示九宫格图片样式
- 通过http user-agent判断是否为手机浏览器
- 运行中修改协调器PAN ID和Channel,协调器广播至所有的设备重启加入新建后的网络
- MFC快速实现网络编程CAsyncSocket类
- 计算机网络之面试常考
- 计算机网络之面试常考
- linux网络设备—PHY
- http状态码301和302详解及区别——辛酸的探索之路
- Advanced Fruits(链接:http://acm.hdu.edu.cn/showproblem.php?pid=1503)
- HTTP协议详解(真的很经典)
- 漫谈网络编程中的容错处理
- httpclient上传文件
- Qt中QTcpServer多线程误区
- Http下载图片