http通信,json数据解析

1 篇文章 0 订阅
1 篇文章 0 订阅

这是之前做的一个项目,客户端向服务器发起请求,客户端接收服务器返回的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();
	}

	@Override
	public int getCount() {
		if(tlist.size()!=0)
		{
			return tlist.size();
		}else {
			return 0;
		}
	}

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return tlist.get(position);
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public 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;
	 
	@Override
	protected 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() {
			
			@Override
			public void onScrollStateChanged(AbsListView view, int scrollState) {
				
				
			}
			
			@Override
			public void onScroll(AbsListView view, int firstVisibleItem,
					int visibleItemCount, int totalItemCount) {
				visibleCount = visibleItemCount;
				visibleLast = firstVisibleItem + visibleItemCount - 1;
				
			}
		});
		
		tour_ListView.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public 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);
	}
	@Override
	public void onRefresh() {
		Start_Index=0;
		tour_list.clear();
		new TourAsync(context, Drag_index).execute(Start_Index);
		
	}

	@Override
	public 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;
		}

		@Override
		protected 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;
		}

		
		@Override
		protected 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);
				}
			 }
		}

		
		@Override
		protected void onProgressUpdate(Integer... values) {
			
			if(values[0]==30)
			{
				show_dialog("加载数据中,请稍等...");
			}
			else
			{
				cancel_dialog();
			}
		}
		
	}

}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值