//适配器
package com.example.wz.imageloaderdemo;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import java.util.List;
public class MyAdapter extends BaseAdapter{
private Context context;
private List<Data.DataBean.ArticleListBean> list;
private int itemLayoutId;
private ImageLoader imageLoader;
private DisplayImageOptions options;
public MyAdapter(Context context, List<Data.DataBean.ArticleListBean> list, int itemLayoutId) {
this.context = context;
this.list = list;
this.itemLayoutId = itemLayoutId;
//创建默认的ImageLoader配置参数
ImageLoaderConfiguration configuration = ImageLoaderConfiguration
.createDefault(context);
//将configuration配置到imageloader中
imageLoader=ImageLoader.getInstance();
imageLoader.init(configuration);
options=new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.bitmapConfig(Bitmap.Config.ARGB_8888)
.showImageOnLoading(R.mipmap.ic_launcher)
.showImageForEmptyUri(R.mipmap.ic_launcher)
.showImageOnFail(R.mipmap.ic_launcher)
.build();
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
if(convertView==null){
convertView=View.inflate(context,itemLayoutId,null);
holder=new ViewHolder();
holder.url= (TextView) convertView.findViewById(R.id.url);
holder.image= (ImageView) convertView.findViewById(R.id.image);
convertView.setTag(holder);
}else{
holder= (ViewHolder) convertView.getTag();
}
Data.DataBean.ArticleListBean bean=list.get(position);
holder.url.setText(bean.getImgSrc());
imageLoader.displayImage(bean.getImgSrc(),holder.image,options);
return convertView;
}
class ViewHolder{
TextView url;
ImageView image;
}
}
//网络请求
package com.example.wz.imageloaderdemo;
import android.util.Log;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
/**
* 类描述:
* 创建人:yekh
* 创建时间:2017/6/16 11:27
*/
public class UrlUtils {
/**
* HttpURLConnection的post请求
* @param urlPath
* @param map
* @return
*/
public static String postUrlConnect(String urlPath, Map<String,Object> map){
StringBuffer sbRequest =new StringBuffer();
if(map!=null&&map.size()>0){
for (String key:map.keySet()){
sbRequest.append(key+"="+map.get(key)+"&");
}
}
String request = sbRequest.substring(0,sbRequest.length()-1);
try {
//创建URL
URL url = new URL(urlPath);
//由URL的openConnection方法得到一个HttpURLConnection(需要强转)
HttpURLConnection httpURLConnection =
(HttpURLConnection) url.openConnection();
//设置post提交
httpURLConnection.setRequestMethod("POST");
//设置超时时间
httpURLConnection.setConnectTimeout(30000);
httpURLConnection.setReadTimeout(30000);
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
//把请求正文通过OutputStream发出去
OutputStream os =httpURLConnection.getOutputStream();
os.write(request.getBytes());
os.flush();
//判断响应码 200 代表成功
if(httpURLConnection.getResponseCode()==200){
//由HttpURLConnection拿到输入流
InputStream in=httpURLConnection.getInputStream();
StringBuffer sb=new StringBuffer();
//根据输入流做一些IO操作
byte [] buff =new byte[1024];
int len=-1;
while((len=in.read(buff))!=-1){
sb.append(new String(buff,0,len,"utf-8"));
}
in.close();
os.close();
httpURLConnection.disconnect();
return sb.toString();
}else{
return null;
}
}catch (Exception e){
Log.e("post","code:"+e.getMessage());
return null;
}
}
/**
* HttpURLConnection的get请求
* @param urlPath
* @return
*/
public static String getUrlConnect(String urlPath){
try {
//创建URL
URL url = new URL(urlPath);
//由URL的openConnection方法得到一个HttpURLConnection(需要强转)
HttpURLConnection httpURLConnection =
(HttpURLConnection) url.openConnection();
//设置连接
httpURLConnection.connect();
//判断响应码 200 代表成功
if(httpURLConnection.getResponseCode()==200){
//由HttpURLConnection拿到输入流
InputStream in=httpURLConnection.getInputStream();
StringBuffer sb=new StringBuffer();
//根据输入流做一些IO操作
byte [] buff =new byte[1024];
int len=-1;
while((len=in.read(buff))!=-1){
sb.append(new String(buff,0,len,"utf-8"));
}
in.close();
httpURLConnection.disconnect();
return sb.toString();
}else{
return null;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
//been
//package com.example.wz.imageloaderdemo;
import java.util.List;
public class Data {
private DataBean data;
private String errorCode;
private boolean success;
private String msg;
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public String getErrorCode() {
return errorCode;
}
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public static class DataBean {
private int size;
private List<ArticleListBean> articleList;
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public List<ArticleListBean> getArticleList() {
return articleList;
}
public void setArticleList(List<ArticleListBean> articleList) {
this.articleList = articleList;
}
public static class ArticleListBean {
private int _id;
private int id;
private String url;
private String title;
private String writer;
private String category;
private String keywords;
private String description;
private int thumbUp;
private int thumbDown;
private String content;
private String tag;
private long createTime;
private String source;
private String site;
private int readed;
private int comment;
private int applaud;
private String imgSrc;
private String markTime;
private double score;
private double categoryScore;
private boolean haveReaded;
private int property;
private Object time;
private String tags;
private Object typeMapList;
private long recommend_time;
private String first_image;
private String tag_weight;
private double site_weight;
private String cate;
public int get_id() {
return _id;
}
public void set_id(int _id) {
this._id = _id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getKeywords() {
return keywords;
}
public void setKeywords(String keywords) {
this.keywords = keywords;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public int getThumbUp() {
return thumbUp;
}
public void setThumbUp(int thumbUp) {
this.thumbUp = thumbUp;
}
public int getThumbDown() {
return thumbDown;
}
public void setThumbDown(int thumbDown) {
this.thumbDown = thumbDown;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
public long getCreateTime() {
return createTime;
}
public void setCreateTime(long createTime) {
this.createTime = createTime;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public String getSite() {
return site;
}
public void setSite(String site) {
this.site = site;
}
public int getReaded() {
return readed;
}
public void setReaded(int readed) {
this.readed = readed;
}
public int getComment() {
return comment;
}
public void setComment(int comment) {
this.comment = comment;
}
public int getApplaud() {
return applaud;
}
public void setApplaud(int applaud) {
this.applaud = applaud;
}
public String getImgSrc() {
return imgSrc;
}
public void setImgSrc(String imgSrc) {
this.imgSrc = imgSrc;
}
public String getMarkTime() {
return markTime;
}
public void setMarkTime(String markTime) {
this.markTime = markTime;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public double getCategoryScore() {
return categoryScore;
}
public void setCategoryScore(double categoryScore) {
this.categoryScore = categoryScore;
}
public boolean isHaveReaded() {
return haveReaded;
}
public void setHaveReaded(boolean haveReaded) {
this.haveReaded = haveReaded;
}
public int getProperty() {
return property;
}
public void setProperty(int property) {
this.property = property;
}
public Object getTime() {
return time;
}
public void setTime(Object time) {
this.time = time;
}
public String getTags() {
return tags;
}
public void setTags(String tags) {
this.tags = tags;
}
public Object getTypeMapList() {
return typeMapList;
}
public void setTypeMapList(Object typeMapList) {
this.typeMapList = typeMapList;
}
public long getRecommend_time() {
return recommend_time;
}
public void setRecommend_time(long recommend_time) {
this.recommend_time = recommend_time;
}
public String getFirst_image() {
return first_image;
}
public void setFirst_image(String first_image) {
this.first_image = first_image;
}
public String getTag_weight() {
return tag_weight;
}
public void setTag_weight(String tag_weight) {
this.tag_weight = tag_weight;
}
public double getSite_weight() {
return site_weight;
}
public void setSite_weight(double site_weight) {
this.site_weight = site_weight;
}
public String getCate() {
return cate;
}
public void setCate(String cate) {
this.cate = cate;
}
}
}
}
//住方法
package com.example.wz.imageloaderdemo;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.widget.ListView;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private String urlPath = "http://zkread.com/htnewsroom/v2.0/mobileapp/user-0/categories/articles?itemType=recommendation&itemName=%25E6%258E%25A8%25E8%258D%2590&itemId=-1&page=1&size=20&firstId=1338557";
private ListView lv;
private List<Data.DataBean.ArticleListBean> list;
private MyAdapter adapter;
private Handler mHandler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Gson gson=new Gson();
Data data=gson.fromJson(msg.obj.toString(),Data.class);
list.addAll(data.getData().getArticleList());
adapter.notifyDataSetChanged();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv= (ListView) findViewById(R.id.lv);
list=new ArrayList<>();
adapter=new MyAdapter(this,list,R.layout.item);
lv.setAdapter(adapter);
loadData();
}
private void loadData() {
new Thread(){
@Override
public void run() {
String result = UrlUtils.getUrlConnect(urlPath);
Message msg= Message.obtain();
msg.what=1;
msg.obj=result;
mHandler.sendMessage(msg);
}
}.start();
}
}