HttpRulconnection 基础使用--->将网络获取的资源 用ListView展示
2017-04-16 21:01
405 查看
/////////////////////////////////////////////////////////
package com.bawei.zday05__httpurlconnection;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ListView;
import com.bawei.zday05__httpurlconnection.GetInput.GetInout;
import com.bawei.zday05__httpurlconnection.aadapter.LiAdapter;
import com.bawei.zday05__httpurlconnection.bean.Weather;
import com.google.gson.Gson;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
}
//////////////////////////////////////////////////////////////
package com.bawei.zday05__httpurlconnection.GetInput;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* 作者:王万鹏
* 时间:2017/4/13.8:54
* 作用:将InputStream 转化成 String类型
*/
public class GetInout {
}
///////////////////////////////////////
package com.bawei.zday05__httpurlconnection.bean;
/**
* 作者:王万鹏
* 时间:2017/4/13.9:05
* 作用:
*/
public class Weather {
}
////////////////////////////////////////////////
package com.bawei.zday05__httpurlconnection.aadapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.bawei.zday05__httpurlconnection.R;
import java.util.ArrayList;
/**
* 作者:王万鹏
* 时间:2017/4/13.11:13
* 作用:
*/
public class LiAdapter extends BaseAdapter{
Context context;
ArrayList strings;
private ViewHolder holder;
}
package com.bawei.zday05__httpurlconnection;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ListView;
import com.bawei.zday05__httpurlconnection.GetInput.GetInout;
import com.bawei.zday05__httpurlconnection.aadapter.LiAdapter;
import com.bawei.zday05__httpurlconnection.bean.Weather;
import com.google.gson.Gson;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
private ListView listView; private EditText editText; private ArrayList<String> strings; private LiAdapter liAdapter; private String waa; //Handler 主线程更新 UI Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); //接收 消息 String obj = (String) msg.obj; //添加到 集合中 strings.add(waa); //刷新适配器 liAdapter.notifyDataSetChanged(); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView) findViewById(R.id.list); strings = new ArrayList<>(); liAdapter = new LiAdapter(MainActivity.this,strings); listView.setAdapter(liAdapter); liAdapter.notifyDataSetChanged(); editText = (EditText) findViewById(R.id.btedt); } public void chaxun(View view){ new Thread(){ @Override public void run() { super.run(); //获取输入框内容 String string = editText.getText().toString(); //调用方法 返回对象 Weather gethttpconnection = gethttpconnection(string); Weather.ResultBean result = gethttpconnection.getResult(); Weather.ResultBean.DataBean data = result.getData(); //得到自己想要的东西() waa = data.getW(); //hander 发送消息 Message message = new Message(); message.obj=waa; message.what=0; handler.sendMessage(message); } }.start(); } public Weather gethttpconnection(String address){ try { //网络访问的网址 URL url = new URL("http://v.juhe.cn/xiangji_weather/real_time_weather.php?areaid="+address+"&key=c17d778dfc94163edbd10ff05bbea463"); // 向服务端发送请求 HttpURLConnection connection= (HttpURLConnection) url.openConnection(); //设置建立连接时间 connection.setConnectTimeout(5000); //设置读取的时间 connection.setReadTimeout(5000); //设置请求的方式 connection.setRequestMethod("GET"); //服务器 响应 // 获取请求吗 int code = connection.getResponseCode(); //如果 请求吗 是200 if (code == 200){ //获取数据 InputStream inputStream = (InputStream) connection.getContent(); // 调用方法 将InputStream 流转化成 String 类型 String s = GetInout.get(inputStream); Gson gson = new Gson(); Weather weather = gson.fromJson(s.toString(), Weather.class); return weather; } } catch (MalformedURLException e) { e.printStackTrace(); } catch (ProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; }
}
//////////////////////////////////////////////////////////////
package com.bawei.zday05__httpurlconnection.GetInput;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* 作者:王万鹏
* 时间:2017/4/13.8:54
* 作用:将InputStream 转化成 String类型
*/
public class GetInout {
public static String get(InputStream inputStream){ byte[] buffer=new byte[1024]; try { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); int read = 0; while ((read = inputStream.read(buffer)) != -1){ byteArrayOutputStream.write(buffer,0,read); } return byteArrayOutputStream.toString(); } catch (IOException e) { e.printStackTrace(); } return null; }
}
///////////////////////////////////////
package com.bawei.zday05__httpurlconnection.bean;
/**
* 作者:王万鹏
* 时间:2017/4/13.9:05
* 作用:
*/
public class Weather {
/** * error_code : 0 * reason : success * result : {"data":{"airp":1009,"aqi":101,"cw":"02","cwd":"02","rh":21,"st":14,"tip_aqi":"轻度污染","tmp":14,"w":"阴","wd":"东风","wdg":3},"pubTime":"20170413091303","reqTime":"20170413092447"} */ private int error_code; private String reason; private ResultBean result; @Override public String toString() { return "Weather{" + "error_code=" + error_code + ", reason='" + reason + '\'' + ", result=" + result + '}'; } public int getError_code() { return error_code; } public void setError_code(int error_code) { this.error_code = error_code; } public String getReason() { return reason; } public void setReason(String reason) { this.reason = reason; } public ResultBean getResult() { return result; } public void setResult(ResultBean result) { this.result = result; } public static class ResultBean { /** * data : {"airp":1009,"aqi":101,"cw":"02","cwd":"02","rh":21,"st":14,"tip_aqi":"轻度污染","tmp":14,"w":"阴","wd":"东风","wdg":3} * pubTime : 20170413091303 * reqTime : 20170413092447 */ private DataBean data; private String pubTime; private String reqTime; @Override public String toString() { return "ResultBean{" + "data=" + data + ", pubTime='" + pubTime + '\'' + ", reqTime='" + reqTime + '\'' + '}'; } public DataBean getData() { return data; } public void setData(DataBean data) { this.data = data; } public String getPubTime() { return pubTime; } public void setPubTime(String pubTime) { this.pubTime = pubTime; } public String getReqTime() { return reqTime; } public void setReqTime(String reqTime) { this.reqTime = reqTime; } public static class DataBean { /** * airp : 1009 * aqi : 101 * cw : 02 * cwd : 02 * rh : 21 * st : 14 * tip_aqi : 轻度污染 * tmp : 14 * w : 阴 * wd : 东风 * wdg : 3 */ private int airp; private int aqi; private String cw; private String cwd; private int rh; private int st; private String tip_aqi; private int tmp; private String w; private String wd; private int wdg; @Override public String toString() { return "DataBean{" + "airp=" + airp + ", aqi=" + aqi + ", cw='" + cw + '\'' + ", cwd='" + cwd + '\'' + ", rh=" + rh + ", st=" + st + ", tip_aqi='" + tip_aqi + '\'' + ", tmp=" + tmp + ", w='" + w + '\'' + ", wd='" + wd + '\'' + ", wdg=" + wdg + '}'; } public int getAirp() { return airp; } public void setAirp(int airp) { this.airp = airp; } public int getAqi() { return aqi; } public void setAqi(int aqi) { this.aqi = aqi; } public String getCw() { return cw; } public void setCw(String cw) { this.cw = cw; } public String getCwd() { return cwd; } public void setCwd(String cwd) { this.cwd = cwd; } public int getRh() { return rh; } public void setRh(int rh) { this.rh = rh; } public int getSt() { return st; } public void setSt(int st) { this.st = st; } public String getTip_aqi() { return tip_aqi; } public void setTip_aqi(String tip_aqi) { this.tip_aqi = tip_aqi; } public int getTmp() { return tmp; } public void setTmp(int tmp) { this.tmp = tmp; } public String getW() { return w; } public void setW(String w) { this.w = w; } public String getWd() { return wd; } public void setWd(String wd) { this.wd = wd; } public int getWdg() { return wdg; } public void setWdg(int wdg) { this.wdg = wdg; } } }
}
////////////////////////////////////////////////
package com.bawei.zday05__httpurlconnection.aadapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.bawei.zday05__httpurlconnection.R;
import java.util.ArrayList;
/**
* 作者:王万鹏
* 时间:2017/4/13.11:13
* 作用:
*/
public class LiAdapter extends BaseAdapter{
Context context;
ArrayList strings;
private ViewHolder holder;
public LiAdapter(Context context, ArrayList<String> strings) { this.context = context; this.strings = strings; } @Override public int getCount() { return strings.size(); } @Override public Object getItem(int position) { return strings.get(position); } @Overri a43a de public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView==null){ holder = new ViewHolder(); convertView=View.inflate(context, R.layout.list_view,null); holder.text= (TextView) convertView.findViewById(R.id.text); convertView.setTag(holder); }else { holder= (ViewHolder) convertView.getTag(); } holder.text.setText(strings.get(position)); return convertView; } class ViewHolder{ TextView text; }
}
相关文章推荐
- ListView异步加载图片是非常实用的方法,凡是是要通过网络获取图片资源一般使用这种方法比较好,用户体验好,下面就说实现方法,先贴上主方法的代码:
- listView利用BaseAdapter及异步任务Gson解析,使用Picasso网络获取资源进行图文混排,PullToRefresh上拉刷新下拉加载
- 获取网络数据进行Gson解析用ListView展示
- android-使用URL获取网络资源
- 使用 Xlistview 展示网络请求数据
- 如何使用urllib2获取网络资源
- Android开发16——获取网络资源之基础应用 推荐
- Python使用urllib2获取网络资源实例讲解
- [Python系列实用教程]一、Python如何使用urllib2获取网络资源
- WEEK2--DrawerLayout 和 ListView 获取网络数据并展示
- React-Native基础_5.列表视图ListView 网络数据展示
- Python如何使用urllib2获取网络资源
- 【起航计划 023】2015 起航计划 Android APIDemo的魔鬼步伐 22 App->Menu->Inflate from XML 使用xml资源展示菜单
- 从网络上获取ImageLoader并且ListView上展示
- Android开发16――获取网络资源之基础应用
- 网络获取数据展示到ListView练习
- Python如何使用urllib2获取网络资源
- 获取网络图片展示到ListView上
- (原创)使用AsyncTask(带修改线程池方式)+自定义ImageLoader+LRU算法对图片三级缓存及其显示优化(只有在ListView滑动停止的时候才去网络请求获取图片数据)
- java基础------>获取资源--->Class类的getResource方法