1. 程式人生 > >BGA banner輪播獲取json簡單使用

BGA banner輪播獲取json簡單使用

//先引入BGA 依賴 compile ‘cn.bingoogolapple:bga-banner:[email protected]

//放輪播的佈局

<?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"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical">

<cn.bingoogolapple.bgabanner.BGABanner
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:id="@+id/banner"
    app:banner_pageChangeDuration="2000"
    ></cn.bingoogolapple.bgabanner.BGABanner>

</LinearLayout>

//OkHttp請求網路資料

import android.os.Handler; import android.os.Message; import java.io.IOException; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response;

public class OkHttpUtil {

private Handler handler=new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        //用傳進來的msg  obj 返回下面字串 強轉
       String s1= (String) msg.obj;
       //去下面記得傳送訊息
        //去下面定義介面
        //呼叫介面成功方法 傳字串
        okHttpListener.success(s1);
        //記得去get方法裡返回this 強轉
    }
};
private OkHttpListener okHttpListener;

//獲取get 方法 傳字串 s
public OkHttpUtil get(String s){
    //new okhttp client
    OkHttpClient client = new OkHttpClient();
    //new request .builder .get .url .build 提交
    Request request = new Request.Builder().get().url(s).build();
    //用client new call  裝request .enqueue 非同步方法 new
    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            //失敗方法
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            //成功方法
            //用傳進來的reponse .body .小寫字串返回值
            String s1 = response.body().string();
            //資訊點 obtain 返回值
            Message message = Message.obtain();
            //資訊 obj =上面字串
            message.obj=s1;
            //去上面封裝例項化hanlder 傳送訊息
            handler.sendMessage(message);
        }
    });
    //記得返回this 強轉
    return this;
}
//回撥介面方法  括號裡實例化介面
public void result(OkHttpListener okHttpListener){
    //介面 返回值 this. 提上去
    this.okHttpListener = okHttpListener;
}
//定義介面
public interface OkHttpListener{
    //定義成功方法 傳字串
    void success(String s1);
}

} //設定輪播圖

import android.widget.ImageView; import com.google.gson.Gson; import com.squareup.picasso.Picasso; import java.util.ArrayList; import java.util.List; import cn.bingoogolapple.bgabanner.BGABanner;

private BGABanner banner;
private String url1="放請求的網址";
//封裝兩個字串集合
private List<String> imglist=new ArrayList<>();
private List<String> titlelist=new ArrayList<>();

//請求網路資料方法
    dohttp();
    //獲取控制元件強轉 提上去
    banner=(BGABanner)get(R.id.banner);
private void dohttp() {
    //new 工具類
    new OkHttpUtil().get(url1).result(new OkHttpUtil.OkHttpListener() {
        @Override
        public void success(String s1) {
            //s1 替換 兩個字串 返回值 下面用這個字串
            String s2 = s1.replace("https", "http");
//                Toast.makeText(context,"看看看"+s1,Toast.LENGTH_SHORT).show();
            //引入依賴 gsonguava
            //new gson .from 傳字串和bean類
            BanBean banBean = new Gson().fromJson(s2, BanBean.class);
            //for 迴圈  幾張圖片 迴圈幾次往圖片集合裡新增bean類獲取裡面的圖片
            for(int i=0;i<3;i++){
                //集合新增bean類的圖片
                imglist.add(banBean.getData().get(i).getIcon());
                //新增集合空字串
                titlelist.add("");
            }
            //呼叫bean類的集合
            List<BanBean.DataBean> datalist = banBean.getData();
            //給banner設定兩個集合
            banner.setData(imglist,titlelist);
            //給banner設定介面卡 括號裡new  泛型圖片和字串
            banner.setAdapter(new BGABanner.Adapter<ImageView,String>() {

                @Override
                public void fillBannerItem(BGABanner banner, ImageView itemView, String model, int position) {
                    //網路新增圖片給控制元件 傳進來的控制元件
                    Picasso.with(context).load(imglist.get(position)).into(itemView);
                }
            });
        }
    });
}