从网络中获取图片进行自动轮播

MainActivity

package com.example.lunbotu2;

import android.annotation.SuppressLint;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
private ViewPagerAdapter adapter;
//private List<NewsBean.DataBean> mjihe;
@SuppressLint(“HandlerLeak”)
private Handler han=new Handler(){
@Override
public void handleMessage(Message msg) {
int item = viewPager.getCurrentItem();
viewPager.setCurrentItem(item+1);
han.sendEmptyMessageDelayed(0,2000);
}
};
private String path=“http://api.expoon.com/AppNews/getNewsList/type/1/p/1”;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager=findViewById(R.id.viewpager);
adapter=new ViewPagerAdapter(MainActivity.this);
viewPager.setAdapter(adapter);
initData();
}

private void initData() {
    NetUntil.getInstance().getAsyn(path, NewsBean.class, new NetUntil.CallBack<NewsBean>() {
        @Override
        public void onsucess(NewsBean o) {
            adapter.setMjihe(o.getData());
            int count = adapter.getCount();
            int i = count / 2;
            viewPager.setCurrentItem(i);
            han.sendEmptyMessageDelayed(0,2000);
        }
    });

}

}

Adapter

package com.example.lunbotu2;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.ArrayList;
import java.util.List;

public class ViewPagerAdapter extends PagerAdapter {
private Context mcon;
private List<NewsBean.DataBean> mjihe;

public ViewPagerAdapter(Context mcon) {
    this.mcon = mcon;
    mjihe=new ArrayList <>();
}
//更新!!!!
public void setMjihe(List <NewsBean.DataBean> mjihe) {
    this.mjihe = mjihe;
    notifyDataSetChanged();
}

@Override//告诉viewpager要展示的次数
public int getCount() {
    return mjihe.size()>0?5000:0;//!!!!!!!!!!**********
}


@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
    return view==o;
}

@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
    ImageView imageView=new ImageView(mcon);
    container.addView(imageView);
    ImageLoader.getInstance().displayImage(mjihe.get(position%mjihe.size()).getPic_url(),imageView);
    return imageView;
}

@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
    container.removeView((View) object);
}

}

Bean类

package com.example.lunbotu2;

import java.util.List;

public class NewsBean {

private int status;
private String info;
private List <DataBean> data;

public int getStatus() {
    return status;
}

public void setStatus(int status) {
    this.status = status;
}

public String getInfo() {
    return info;
}

public void setInfo(String info) {
    this.info = info;
}

public List <DataBean> getData() {//4
    return data;
}

public void setData(List <DataBean> data) {
    this.data = data;
}

public static class DataBean {
    private String news_id;
    private String news_title;
    private String news_summary;
    private String pic_url;

    public String getNews_id() {
        return news_id;
    }

    public void setNews_id(String news_id) {
        this.news_id = news_id;
    }

    public String getNews_title() {
        return news_title;
    }

    public void setNews_title(String news_title) {
        this.news_title = news_title;
    }

    public String getNews_summary() {
        return news_summary;
    }

    public void setNews_summary(String news_summary) {
        this.news_summary = news_summary;
    }

    public String getPic_url() {
        return pic_url;
    }

    public void setPic_url(String pic_url) {
        this.pic_url = pic_url;
    }
}

}

工具类

package com.example.lunbotu2;

import android.annotation.SuppressLint;
import android.os.AsyncTask;

import com.google.gson.Gson;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class NetUntil {

//单例
private static NetUntil instance;
private NetUntil(){

}
public static NetUntil getInstance(){
    if (instance==null){
        instance=new NetUntil();
    }
    return instance;
}

//1.根据网址得到数据
public String getNet(String path){
    String getstring="";
    try {
        URL url = new URL(path);
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        int responseCode = urlConnection.getResponseCode();
        if (responseCode==200){
            InputStream inputStream = urlConnection.getInputStream();
            getstring = getstring(inputStream);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return getstring;
}

//2.转换为字符
public String getstring(InputStream stream) throws IOException {
    InputStreamReader streamReader = new InputStreamReader(stream);
    BufferedReader reader = new BufferedReader(streamReader);
    StringBuilder builder = new StringBuilder();
    for (String i = reader.readLine(); i !=null ; i=reader.readLine()) {
        builder.append(i);
    }
    return builder.toString();
}


//3.进行gson解析

public <T> T getGson(String path,Class clazz){
    T o=null;
    String net = getNet(path);
    Gson gson = new Gson();
    o = (T) gson.fromJson(net, clazz);
    return o;
}
//4.定义接口
public interface CallBack<T>{
    void onsucess(T t);
}

//5.在子线程中运行
@SuppressLint("StaticFieldLeak")
public void getAsyn(String path, final Class clazz, final CallBack callBack){
    new AsyncTask<String, Void, Object>() {
        @Override
        protected Object doInBackground(String... strings) {
            return getGson(strings[0],clazz);
        }

        @Override
        protected void onPostExecute(Object o) {
            callBack.onsucess(o);
        }
    }.execute(path);
}

}

猜你喜欢

转载自blog.csdn.net/weixin_43258668/article/details/84256204