BGA banner輪播獲取json簡單使用
阿新 • • 發佈:2018-12-17
//先引入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); } }); } }); }