http通信,json数据解析

来源:互联网 发布:php 记事本打开是乱码 编辑:程序博客网 时间:2024/05/01 08:11

这是之前做的一个项目,客户端向服务器发起请求,客户端接收服务器返回的json数据并进行解析。

// 访问网站数据库获取数据private String conWeb(String url) {String str = "";try {HttpGet request = new HttpGet(url); HttpClient httpClient = new DefaultHttpClient();HttpResponse response = httpClient.execute(request);if (response.getStatusLine().getStatusCode() == 200) {str = EntityUtils.toString(response.getEntity());}} catch (Exception e) {e.printStackTrace();}return str;}

//------------------获取旅游信息-----------------------//public List<Tour> getTour(String url,String schoolid,Integer start_index){url="http://121.199.40.201/m/echo/tmall.php?from=travel";List<Tour> tourList=new ArrayList<Tour>();String str=conWeb(url+"&school_id="+schoolid+"&start="+start_index);String[] dividepid;String s_url;Log.v("gettour", str);try {JSONObject object=new JSONObject(str).getJSONObject("note");//获取json对象JSONArray array=object.getJSONArray("r");for(int i=0;i<array.length();i++){JSONObject temp=(JSONObject)array.get(i);Tour tour=new Tour();tour.setId(temp.getString("id"));tour.setUid(temp.getString("shop_id"));tour.setName(temp.getString("name"));tour.setStart(temp.getString("start"));tour.setDestin(temp.getString("destin"));tour.setDays(temp.getString("days"));tour.setPrice(temp.getString("price"));tour.setUsername(temp.getString("shop_name"));tour.setLong_tel(temp.getString("phone"));tour.setDes(temp.getString("des"));//-------------------------------判断短号是否为空----------------------------------//if((!temp.getString("duan").equals("null"))&&temp.getString("duan")!=null&&(!temp.getString("duan").equals(""))&&(!temp.getString("duan").equals("0"))){tour.setShort_tel(temp.getString("duan"));}else{tour.setShort_tel("");}if((!temp.getString("cover").equals("null"))&&temp.getString("cover")!=null&&(!temp.getString("cover").equals(""))){try {dividepid=temp.getString("cover").split("\\.");   //裁剪后缀名s_url=baseUrl+temp.getString("cover").toString()+"_s."+dividepid[dividepid.length-1]; //换成小图片Log.v("tour_covert", s_url + i+"");tour.setCover(s_url);} catch (Exception e) {e.printStackTrace();}}else {tour.setCover(""); }tourList.add(tour);}} catch (Exception e) {e.printStackTrace();}return tourList;}

适配器的代码:

public class TourAdapter extends BaseAdapter{public LayoutInflater inflater;//public List<Map<String,Object>> list;private List<Tour> tlist;public FinalBitmap fb;public TourAdapter(Context context,List<Tour> list){this.inflater=LayoutInflater.from(context);this.tlist=list;fb = FinalBitmap.create(context);fb.configDiskCachePath(new SetheadImageActivity().getCache());fb.configLoadingImage(R.drawable.ic_launcher);fb.configLoadfailImage(R.drawable.ic_launcher);fb.configBitmapLoadThreadSize(5);fb.init();}@Overridepublic int getCount() {if(tlist.size()!=0){return tlist.size();}else {return 0;}}@Overridepublic Object getItem(int position) {// TODO Auto-generated method stubreturn tlist.get(position);}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {TourHolder holder =new TourHolder();if(convertView==null){convertView=inflater.inflate(R.layout.tour_item, null);holder.covert=(ImageView)convertView.findViewById(R.id.tour_item_img);holder.name=(TextView)convertView.findViewById(R.id.tour_item_name);holder.money=(TextView)convertView.findViewById(R.id.tour_item_money);holder.days=(TextView)convertView.findViewById(R.id.tour_item_days);holder.username=(TextView)convertView.findViewById(R.id.tour_item_bossname);convertView.setTag(holder);//绑定ViewHolder对象}else {holder=(TourHolder)convertView.getTag();}fb.display(holder.covert,tlist.get(position).getCover());holder.name.setText(tlist.get(position).getName());holder.days.setText(tlist.get(position).getDays()+"天");holder.money.setText("¥"+tlist.get(position).getPrice());holder.username.setText(tlist.get(position).getUsername());return convertView;}}

public class tourActivity extends loginActivity implements CommentListView.OnRefreshLoadingMoreListener{private CommentListView tour_ListView;private List<Tour> tour_list;private List<Tour> tour_con;private final int Drag_index=1;private final int Loadmore_index=2;private Integer Start_Index=0;private Bundle bundle;private String uid="100000"; //--------------------------------------------private int visibleCount;private int visibleLast;private String pid;private TourAdapter tadapter;private boolean firstload=true;private Context context; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.tour);tour_list=new ArrayList<Tour>();tour_con=new ArrayList<Tour>();context=this;init();tour_ListView.setOnRefreshListener(this);onRefresh();tour_ListView.setOnScrollListener(new OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {visibleCount = visibleItemCount;visibleLast = firstVisibleItem + visibleItemCount - 1;}});tour_ListView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {try {Tour tour_detail=tour_list.get(position);Log.d("tour", "---------------"+position+"----------"+ tour_detail.toString()+"");Intent it = new Intent();//创建Intent对象Bundle bundle = new Bundle();//创建Bundle对象it.setClass(tourActivity.this, TourDetailActivity.class);bundle.putSerializable("tour_details",(Serializable) tour_detail);Log.d("tour_detail", tour_detail.toString());it.putExtras(bundle);startActivity(it);} catch (Exception e) {e.printStackTrace();}}});}public void  init(){tadapter=new TourAdapter(context, tour_list);tour_ListView=(CommentListView)findViewById(R.id.tour_list);tour_ListView.setAdapter(tadapter);}@Overridepublic void onRefresh() {Start_Index=0;tour_list.clear();new TourAsync(context, Drag_index).execute(Start_Index);}@Overridepublic void onLoadMore() {Start_Index=Start_Index+10;new TourAsync(context, Loadmore_index).execute(Start_Index);}public class TourAsync extends AsyncTask<Integer, Integer, Void>{private Context context;private int index;// 用于判断是下拉刷新还是点击加载更多public TourAsync(Context context,int index){this.context = context;this.index = index;}@Overrideprotected Void doInBackground(Integer... params) {if(firstload){publishProgress(30);} //----------------------------修改school id----------------------------------------------------try{ tour_con= new ConnWeb().getTour("url", "560", params[0]); //---------------------------------tour_list.addAll(tour_con);}catch (Exception e) {e.printStackTrace();}return null;}@Overrideprotected void onPostExecute(Void result) {if(firstload){ publishProgress(100);firstload=false;} if(index==Drag_index){// adapter=new albumAdapter(albumActivity.this,getAlbum_Data()); if(tour_list.size()==0){// tour_ListView.onRefreshComplete(); Toast.makeText(context, "已加载全部数据",Toast.LENGTH_LONG).show(); return; }else{ try {   tadapter.notifyDataSetChanged(); tour_ListView.setSelection(visibleLast - visibleCount+1);// tour_ListView.onRefreshComplete();} catch (Exception e) {e.printStackTrace();}    } }else if(index==Loadmore_index){     if (tour_con.size()==0) { tour_ListView.onLoadMoreComplete(false); Toast.makeText(context, "没有数据更新",Toast.LENGTH_LONG).show(); return;}else{  tadapter.notifyDataSetChanged();//album_listview.setAdapter(adapter);tour_ListView.setSelection(visibleLast - visibleCount+1);tour_ListView.onLoadMoreComplete(false);} }}@Overrideprotected void onProgressUpdate(Integer... values) {if(values[0]==30){show_dialog("加载数据中,请稍等...");}else{cancel_dialog();}}}}


原创粉丝点击