应用:gson、Universal-Image-Loader、HttpUrlConnection请求网络
首先导入依赖:
gson : compile ‘com.google.code.gson:gson:2.2.4’
Universal-Image-Loader:
compile ‘com.nostra13.universalimageloader:universal-image-loader:1.9.5’
进行相应的展示
String path = 自定义的数据接口
private ListView lv;
private List<Bean.NewslistBean> list;
private ByteArrayOutputStream outputStream;
/***
* new一个Hanlder
*/
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
String json = (String) msg.obj;
/*
转换为json格式
*/
Gson gson = new Gson();
Bean bean = gson.fromJson(json, Bean.class);
list = bean.getNewslist();
/**
* 设置适配器
*/
MyAdapter adapter = new MyAdapter(MainActivity.this,list);
lv.setAdapter(adapter);
}
};
/**
* handler传递数据信息
* @param savedInstanceState
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
new Thread(){
@Override
public void run() {
super.run();
String json = getData();
Message msg = new Message();
msg.obj=json;
//handler传递数据
handler.sendMessage(msg);
}
}.start();
}
/*
网络请求
*/
private String getData(){
try {
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
//得到请求方式
connection.setRequestMethod("GET");
//得到延迟时间
connection.setConnectTimeout(3000);
//得到请求码
int responseCode = connection.getResponseCode();
//判断是否成功
if(responseCode==200){
int len;
byte[] b = new byte[1024*20];
InputStream inputStream = connection.getInputStream();
outputStream = new ByteArrayOutputStream();
while ((len=inputStream.read(b))!=-1){
outputStream.write(b,0,len);
}
}
return outputStream.toString();//返回数据
} catch (Exception e) {
e.printStackTrace();
}
return null;//返回空
}
自定义一个类 实现全局
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
/*
进行全局的图片配置
*/
ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).build();
ImageLoader loader = ImageLoader.getInstance();
loader.init(configuration);
}
}
自定义一个adapter包
在这个MyAdapter中书写数据
public class MyAdapter extends BaseAdapter {
Context context;
List<Bean.NewslistBean> list;
/*
得到传过来的数据
*/
public MyAdapter(Context context,List<Bean.NewslistBean> list){
this.context=context;
this.list=list;
}
/**
* 得到集合的长度
* @return
*/
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
/**
* 优化
* @param i
* @param view
* @param viewGroup
* @return
*/
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if(view==null){
view = View.inflate(context, R.layout.lv_item,null);
}
ImageView iv = view.findViewById(R.id.lv_iv);
TextView tv = view.findViewById(R.id.lv_tv);
String s = list.get(i).getPicUrl();
/**
* 调用ImageLoader
*/
ImageLoader.getInstance().displayImage(s,iv);
tv.setText(list.get(i).getTitle());
return view;
}
}