一
package com.example.day15;
/**
* Created by 。。。。 on 2018/10/16.
*/
public interface ICallBack {
void onsuccess(Object o);
void onFailed(Exception e);
}
二
package com.example.day15;
import android.os.Handler;
import com.google.gson.Gson;
import java.io.IOException;
import java.lang.reflect.Type;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
/**
* Created by 。。。。 on 2018/10/16.
*/
public class HttpUtils {
private static volatile HttpUtils instance;
private Handler handler=new Handler();
private OkHttpClient client;
private HttpUtils(){
client=new OkHttpClient();
}
public static HttpUtils getInstance(){
if(instance==null){
synchronized (HttpUtils.class){
if(null==instance){
instance=new HttpUtils();
}
}
}
return instance;
}
public void get(String url, final ICallBack callBack, final Type type){
Request request=new Request.Builder()
.get()
.url(url)
.build();
Call call=client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
handler.post(new Runnable() {
@Override
public void run() {
callBack.onFailed(e);
}
});
}
@Override
public void onResponse(final Call call, Response response) throws IOException {
String result=response.body().string();
Gson gson=new Gson();
final Object o = gson.fromJson(result, type);
handler.post(new Runnable() {
@Override
public void run() {
callBack.onsuccess(o);
}
});
}
});
}
}
三
package com.example.day15;
import java.lang.reflect.Type;
/**
* Created by 。。。。 on 2018/10/16.
*/
public class Model {
public void login(String url, ICallBack callBack, Type type){
HttpUtils.getInstance().get(url,callBack,type);
}
}
四
package com.example.day15;
import java.util.List;
/**
* Created by 。。。。 on 2018/10/19.
*/
public interface IView<T> {
void success(T t);
void failed(Exception e);
void getBanner(List<Banner.DataBean> list);
}
五
package com.example.day15;
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.bumptech.glide.Glide;
import java.util.List;
/**
* Created by 。。。。 on 2018/10/17.
*/
public class BannerAdapter extends PagerAdapter {
private Context context;
private List<Banner.DataBean> list;
public BannerAdapter(Context context, List<Banner.DataBean> list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view==object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
ImageView img=new ImageView(context);
Glide.with(context).load(list.get(position).getIcon()).into(img);
container.addView(img);
return img;
ImageView img=new ImageView(context); Banner.DataBean banner=list.get(position); String images=banner.getIcon(); if(!TextUtils.isEmpty(images)) { String[] strings=images.split("\\|"); Glide.with(context).load(StringUtils.https2Http(strings[0])).into(img); } container.addView(img); return img;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
container.removeView((View) object);
}
}
六
package com.example.day15;
import android.text.TextUtils;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
/**
* Created by 。。。。 on 2018/10/16.
*/
public class LoginPresenter {
private IView iv;
private Model model;
public void attach(IView iv) {
this.iv = iv;
model = new Model();
}
//轮播
public void getBanner(){
Type type=new TypeToken<Banner>(){}.getType();
model.login("https://www.zhaoapi.cn/ad/getAd", new ICallBack() {
@Override
public void onsuccess(Object o) {
Banner banner= (Banner) o;
if(banner!=null){
iv.getBanner(banner.getData());
}
}
@Override
public void onFailed(Exception e) {
}
},type);
}
public void detach(){
if(iv!=null){
iv=null;
}
}
}
七
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></android.support.v4.view.ViewPager>
</LinearLayout>
八
package com.example.day15;
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 implements IView<Banner> {
private ViewPager pager;
private List<Banner.DataBean> bannerlist;
private BannerAdapter adapter;
private LoginPresenter presenter;
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 123) {
int index = pager.getCurrentItem();
if (index < bannerlist.size() - 1) {
index++;
} else {
index = 0;
}
handler.sendEmptyMessageDelayed(123, 3000);
pager.setCurrentItem(index);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pager = findViewById(R.id.pager);
bannerlist = new ArrayList<>();
adapter = new BannerAdapter(MainActivity.this, bannerlist);
pager.setAdapter(adapter);
presenter = new LoginPresenter();
presenter.attach(this);
presenter.getBanner();
}
@Override
public void success(Banner banner) {
}
@Override
public void failed(Exception e) {
}
@Override
public void getBanner(List<Banner.DataBean> list) {
if (list != null) {
bannerlist.clear();
bannerlist.addAll(list);
adapter.notifyDataSetChanged();
}
}
@Override
public void onResume() {
super.onResume();
handler.sendEmptyMessageDelayed(123, 3000);
}
@Override
public void onPause() {
super.onPause();
handler.removeCallbacksAndMessages(null);
}
}
记得也封装实体类
package com.example.day15; /** * Created by 。。。。 on 2018/10/23. */ public class StringUtils { public static String https2Http(String url){ return url.replace("https","http"); } }