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