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;
}
}
}
实现效果图