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);
}
}