diff --git a/banner/src/main/java/com/youth/banner/adapter/BannerAdapter.java b/banner/src/main/java/com/youth/banner/adapter/BannerAdapter.java index b8d1e7c..5d05024 100644 --- a/banner/src/main/java/com/youth/banner/adapter/BannerAdapter.java +++ b/banner/src/main/java/com/youth/banner/adapter/BannerAdapter.java @@ -1,5 +1,6 @@ package com.youth.banner.adapter; +import android.annotation.SuppressLint; import android.view.ViewGroup; import androidx.annotation.NonNull; @@ -14,9 +15,6 @@ import java.util.ArrayList; import java.util.List; -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - public abstract class BannerAdapter extends RecyclerView.Adapter implements IViewHolder { protected List mDatas = new ArrayList<>(); @@ -33,11 +31,33 @@ public BannerAdapter(List datas) { * * @param datas */ + @SuppressLint("NotifyDataSetChanged") public void setDatas(List datas) { - if (datas == null) { - datas = new ArrayList<>(); + if (BannerConfig.isIsUseBanerdata()) { + setList(datas); + } else { + if (datas == null) { + datas = new ArrayList<>(); + } + mDatas = datas; + notifyDataSetChanged(); + } + + } + + /*** + * 设置数据 + */ + @SuppressLint("NotifyDataSetChanged") + public void setList(List datas) { + if (mDatas == null) { + mDatas = new ArrayList<>(); + } else { + mDatas.clear(); + } + if (mDatas != null && datas != null) { + mDatas.addAll(datas); } - mDatas = datas; notifyDataSetChanged(); } @@ -48,7 +68,14 @@ public void setDatas(List datas) { * @return */ public T getData(int position) { - return mDatas.get(position); + if (mDatas == null) { + return null; + } else { + if (mDatas.size() > position&&position!=-1) { + return mDatas.get(position); + } + } + return null; } /** @@ -58,7 +85,16 @@ public T getData(int position) { * @return */ public T getRealData(int position) { - return mDatas.get(getRealPosition(position)); + + if (mDatas == null) { + return null; + } else { + int realPosition = getRealPosition(position); + if (mDatas.size() > realPosition&&position!=-1) { + return mDatas.get(realPosition); + } + } + return null; } diff --git a/banner/src/main/java/com/youth/banner/config/BannerConfig.java b/banner/src/main/java/com/youth/banner/config/BannerConfig.java index faa1f6f..aee4f6d 100644 --- a/banner/src/main/java/com/youth/banner/config/BannerConfig.java +++ b/banner/src/main/java/com/youth/banner/config/BannerConfig.java @@ -40,4 +40,13 @@ public class BannerConfig { public static final int INDICATOR_HEIGHT = (int) BannerUtils.dp2px(3); public static final int INDICATOR_RADIUS = (int) BannerUtils.dp2px(3); + public static boolean IS_USE_BANERDATA=false; + + public static boolean isIsUseBanerdata() { + return IS_USE_BANERDATA; + } + + public static void setIsUseBanerdata(boolean isUseBanerdata) { + IS_USE_BANERDATA = isUseBanerdata; + } }