1 2 6 7 12 13 22 23 33 34 45 46 57 -58 59 60 61 66 67 72 73 79 80 86 87 88 運行效果圖:需要用到四個lib包 :解...
1 <?xml version="1.0" encoding="UTF-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="80dp" 5 android:background="@android:color/white" > 6 7 <ImageView 8 android:id="@+id/list_icon_img" 9 android:layout_width="80dp" 10 android:layout_height="80dp" 11 android:src="@drawable/ic_launcher" /> 12 13 <TextView 14 android:id="@+id/list_name_txt" 15 android:layout_width="wrap_content" 16 android:layout_height="wrap_content" 17 android:layout_toRightOf="@id/list_icon_img" 18 android:singleLine="true" 19 android:text="瑞庭竹島酒店" 20 android:textColor="@android:color/background_dark" 21 android:textSize="16sp" /> 22 23 <TextView 24 android:id="@+id/list_coupe_txt" 25 android:layout_width="wrap_content" 26 android:layout_height="wrap_content" 27 android:layout_below="@id/list_name_txt" 28 android:layout_toRightOf="@id/list_icon_img" 29 android:singleLine="true" 30 android:text="網上預定入住可享返現優惠" 31 android:textColor="@android:color/holo_red_dark" 32 android:textSize="14sp" /> 33 34 <TextView 35 android:id="@+id/list_distance_txt" 36 android:layout_width="wrap_content" 37 android:layout_height="wrap_content" 38 android:layout_alignParentBottom="true" 39 android:layout_alignParentRight="true" 40 android:layout_marginRight="10dp" 41 android:drawableLeft="@drawable/info_map" 42 android:text="2.0k" 43 android:textColor="@android:color/tab_indicator_text" 44 android:textSize="14sp" /> 45 46 <TextView 47 android:id="@+id/list_location_txt" 48 android:layout_width="wrap_content" 49 android:layout_height="wrap_content" 50 android:layout_alignParentBottom="true" 51 android:layout_toLeftOf="@id/list_distance_txt" 52 android:layout_toRightOf="@id/list_icon_img" 53 android:singleLine="true" 54 android:text="四川省成都市高新區老成仁路8號成都市高新區老成都市高新區老成都市高新區老成都市高新區老" 55 android:textColor="@android:color/tab_indicator_text" 56 android:textSize="14sp" /> 57 - 58 59 60 61 <RelativeLayout 62 android:layout_width="wrap_content" 63 android:layout_height="wrap_content" 64 android:layout_alignParentRight="true" 65 android:layout_alignParentTop="true" > 66 67 <ImageView 68 android:id="@+id/list_card_img" 69 android:layout_width="wrap_content" 70 android:layout_height="wrap_content" 71 android:src="@drawable/near_card" /> 72 73 <ImageView 74 android:id="@+id/list_group_img" 75 android:layout_width="wrap_content" 76 android:layout_height="wrap_content" 77 android:layout_toRightOf="@id/list_card_img" 78 android:src="@drawable/near_group" /> 79 80 <ImageView 81 android:id="@+id/list_ticket_img" 82 android:layout_width="wrap_content" 83 android:layout_height="wrap_content" 84 android:layout_toRightOf="@id/list_group_img" 85 android:src="@drawable/near_ticket" /> 86 </RelativeLayout> 87 88 </RelativeLayout>
運行效果圖:
需要用到四個lib包 :解析json gson包,從網路地址解析json數據成String字元串的非同步網路解析工具AsyncHttpClient,等
下載地址:點擊下載
代碼如下:
1 package com.lixu.testjsonall; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 import com.google.gson.Gson; 6 import com.loopj.android.http.AsyncHttpClient; 7 import com.loopj.android.http.TextHttpResponseHandler; 8 import com.squareup.picasso.Picasso; 9 import android.app.Activity; 10 import android.content.Context; 11 import android.os.Bundle; 12 import android.view.LayoutInflater; 13 import android.view.View; 14 import android.view.ViewGroup; 15 import android.view.Window; 16 import android.widget.ArrayAdapter; 17 import android.widget.ImageView; 18 import android.widget.ListView; 19 import android.widget.TextView; 20 import android.widget.Toast; 21 import cz.msebera.android.httpclient.Header; 22 23 public class MainActivity extends Activity { 24 private String net_url = "http://192.168.1.139/json/around"; 25 private ListView lv; 26 private MyAdapter mMyAdapter; 27 28 @Override 29 protected void onCreate(Bundle savedInstanceState) { 30 super.onCreate(savedInstanceState); 31 requestWindowFeature(Window.FEATURE_NO_TITLE); 32 setContentView(R.layout.activity_main); 33 34 lv = (ListView) findViewById(R.id.lv); 35 36 mMyAdapter = new MyAdapter(this, -1); 37 38 lv.setAdapter(mMyAdapter); 39 40 AsyncHttpClient ahc = new AsyncHttpClient(); 41 ahc.get(net_url, new TextHttpResponseHandler() { 42 // 通過網路地址解析Json數據成String類型 43 @Override 44 public void onSuccess(int arg0, Header[] arg1, String arg2) { 45 // 從字元串中解析json文件 46 Gson gson = new Gson(); 47 Infoall infoall = gson.fromJson(arg2, Infoall.class); 48 Info info = infoall.getInfo(); 49 List<MerchantKey> mMerchantKey = info.getMerchantKey(); 50 mMyAdapter.setList(mMerchantKey); 51 } 52 53 @Override 54 public void onFailure(int arg0, Header[] arg1, String arg2, Throwable arg3) { 55 56 Toast.makeText(getApplicationContext(), "錯誤!", 0).show(); 57 } 58 }); 59 60 } 61 62 private class MyAdapter extends ArrayAdapter { 63 private LayoutInflater flater; 64 private List<MerchantKey> data = new ArrayList<MerchantKey>(); 65 private Context context; 66 67 public MyAdapter(Context context, int resource) { 68 super(context, resource); 69 this.context = context; 70 flater = LayoutInflater.from(context); 71 } 72 73 public void setList(List<MerchantKey> data) { 74 this.data = data; 75 mMyAdapter.notifyDataSetChanged(); 76 } 77 78 @Override 79 public View getView(int position, View convertView, ViewGroup parent) { 80 if (convertView == null) 81 convertView = flater.inflate(R.layout.list, null); 82 TextView biaoti = (TextView) convertView.findViewById(R.id.list_name_txt); 83 biaoti.setText(data.get(position).getName()); 84 TextView biaoti2 = (TextView) convertView.findViewById(R.id.list_coupe_txt); 85 biaoti2.setText(data.get(position).getCoupon()); 86 87 TextView dizhi = (TextView) convertView.findViewById(R.id.list_location_txt); 88 dizhi.setText(data.get(position).getLocation()); 89 90 TextView juli = (TextView) convertView.findViewById(R.id.list_distance_txt); 91 juli.setText(data.get(position).getDistance()); 92 93 ImageView jpg = (ImageView) convertView.findViewById(R.id.list_icon_img); 94 Picasso.with(context).load(data.get(position).getPicUrl()).into(jpg); 95 96 ImageView tuan = (ImageView) convertView.findViewById(R.id.list_group_img); 97 ImageView quan = (ImageView) convertView.findViewById(R.id.list_ticket_img); 98 ImageView ka = (ImageView) convertView.findViewById(R.id.list_card_img); 99 100 if (data.get(position).getGroupType().equals("YES")) { 101 tuan.setVisibility(View.VISIBLE); 102 } else { 103 tuan.setVisibility(View.GONE); 104 } 105 if (data.get(position).getCardType().equals("YES")) { 106 ka.setVisibility(View.VISIBLE); 107 } else { 108 ka.setVisibility(View.GONE); 109 } 110 if (data.get(position).getCouponType().equals("YES")) { 111 quan.setVisibility(View.VISIBLE); 112 } else { 113 quan.setVisibility(View.GONE); 114 } 115 116 return convertView; 117 118 } 119 120 @Override 121 public int getCount() { 122 123 return data.size(); 124 } 125 126 } 127 128 }
1 package com.lixu.testjsonall; 2 3 import java.util.List; 4 5 public class Info { 6 private List<MerchantKey> merchantKey; 7 8 public List<MerchantKey> getMerchantKey() { 9 return merchantKey; 10 } 11 12 public void setMerchantKey(List<MerchantKey> merchantKey) { 13 this.merchantKey = merchantKey; 14 } 15 16 }
1 package com.lixu.testjsonall; 2 3 public class Infoall { 4 5 private Info info; 6 7 public Info getInfo() { 8 return info; 9 } 10 11 public void setInfo(Info info) { 12 this.info = info; 13 } 14 15 }
1 package com.lixu.testjsonall; 2 3 public class MerchantKey { 4 private String name; 5 private String coupon; 6 private String location; 7 private String distance; 8 private String picUrl; 9 private String couponType; 10 private String cardType; 11 private String groupType; 12 13 public String getName() { 14 return name; 15 } 16 17 public void setName(String name) { 18 this.name = name; 19 } 20 21 public String getCoupon() { 22 return coupon; 23 } 24 25 public void setCoupon(String coupon) { 26 this.coupon = coupon; 27 } 28 29 public String getLocation() { 30 return location; 31 } 32 33 public void setLocation(String location) { 34 this.location = location; 35 } 36 37 public String getDistance() { 38 return distance; 39 } 40 41 public void setDistance(String distance) { 42 this.distance = distance; 43 } 44 45 public String getPicUrl() { 46 return picUrl; 47 } 48 49 public void setPicUrl(String picUrl) { 50 this.picUrl = picUrl; 51 } 52 53 public String getCouponType() { 54 return couponType; 55 } 56 57 public void setCouponType(String couponType) { 58 this.couponType = couponType; 59 } 60 61 public String getCardType() { 62 return cardType; 63 } 64 65 public void setCardType(String cardType) { 66 this.cardType = cardType; 67 } 68 69 public String getGroupType() { 70 return groupType; 71 } 72 73 public void setGroupType(String groupType) { 74 this.groupType = groupType; 75 } 76 77 }
xml文件:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:orientation="vertical" 6 tools:context="com.lixu.testjsonall.MainActivity" > 7 8 <LinearLayout 9 android:layout_width="match_parent" 10 android:layout_height="wrap_content" 11 android:background="@drawable/title_log" 12 android:orientation="horizontal" > 13 14 <ImageView 15 android:id="@+id/fanhui" 16 android:layout_width="30dp" 17 android:layout_height="30dp" 18 android:layout_gravity="center" 19 android:src="@drawable/btn_back" /> 20 21 <TextView 22 android:layout_width="wrap_content" 23 android:layout_height="wrap_content" 24 android:layout_gravity="center" 25 android:text=" 我的關註" 26 android:textSize="25sp" /> 27 </LinearLayout> 28 29 <ListView 30 android:id="@+id/lv" 31 android:layout_width="match_parent" 32 android:layout_height="match_parent" /> 33 34 </LinearLayout>