Przeglądaj źródła

Remove ViewHolder,remove BaseSimpleAdapter.java.

zhpanvip 4 lat temu
rodzic
commit
c0cfe1fb01

+ 6 - 5
app/src/main/java/com/example/zhpan/banner/adapter/DataBindingSampleAdapter.java

@@ -4,7 +4,8 @@ import androidx.databinding.DataBindingUtil;
 
 import com.example.zhpan.banner.R;
 import com.example.zhpan.banner.databinding.ItemSlideModelDataBindingBinding;
-import com.zhpan.bannerview.BaseSimpleAdapter;
+import com.example.zhpan.banner.net.BannerData;
+import com.zhpan.bannerview.BaseBannerAdapter;
 import com.zhpan.bannerview.BaseViewHolder;
 
 
@@ -14,12 +15,12 @@ import com.zhpan.bannerview.BaseViewHolder;
  *   Description:使用DataBinding示例
  * </pre>
  */
-public class DataBindingSampleAdapter extends BaseSimpleAdapter<Integer> {
+public class DataBindingSampleAdapter extends BaseBannerAdapter<BannerData> {
 
     @Override
-    protected void bindData(BaseViewHolder<Integer> holder, Integer data, int position, int pageSize) {
-        ItemSlideModelDataBindingBinding mItemViewDataBinding = DataBindingUtil.bind(holder.itemView);
-        mItemViewDataBinding.bannerImage.setImageResource(data);
+    protected void bindData(BaseViewHolder<BannerData> holder, BannerData data, int position, int pageSize) {
+        ItemSlideModelDataBindingBinding dataBinding = DataBindingUtil.bind(holder.itemView);
+        dataBinding.setBannerData(data);
     }
 
     @Override

+ 6 - 23
app/src/main/java/com/example/zhpan/banner/adapter/MultiViewTypesAdapter.java

@@ -1,20 +1,12 @@
 package com.example.zhpan.banner.adapter;
 
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
+import android.widget.ImageView;
 
 import com.bumptech.glide.Glide;
 import com.example.zhpan.banner.R;
 import com.example.zhpan.banner.net.BannerData;
-import com.example.zhpan.banner.view.CornerImageView;
-import com.example.zhpan.banner.viewholder.ServerImageViewHolder;
-import com.example.zhpan.banner.viewholder.NewTypeViewHolder;
 import com.zhpan.bannerview.BaseBannerAdapter;
 import com.zhpan.bannerview.BaseViewHolder;
-import com.zhpan.bannerview.utils.BannerUtils;
-
-import org.jetbrains.annotations.NotNull;
 
 /**
  * <pre>
@@ -22,27 +14,18 @@ import org.jetbrains.annotations.NotNull;
  *   Description:Multiple view types adapter sample.
  * </pre>
  */
-public class MultiViewTypesAdapter extends BaseBannerAdapter<BannerData, BaseViewHolder<BannerData>> {
+public class MultiViewTypesAdapter extends BaseBannerAdapter<BannerData> {
 
     @Override
     protected void bindData(BaseViewHolder<BannerData> holder, BannerData data, int position, int pageSize) {
-        if (holder instanceof ServerImageViewHolder) {
-            CornerImageView imageView = holder.findView(R.id.banner_image);
-            Glide.with(imageView).load(data.getImagePath()).placeholder(R.drawable.placeholder).into(imageView);
-            BannerUtils.log("ServerImageViewHolder", "position:" + position);
-        } else if (holder instanceof NewTypeViewHolder) {
+        if (getViewType(position) == BannerData.TYPE_NEW) {
             holder.setImageResource(R.id.image_view, data.getDrawable());
+        } else {
+            ImageView imageView = holder.findViewById(R.id.banner_image);
+            Glide.with(imageView).load(data.getImagePath()).placeholder(R.drawable.placeholder).into(imageView);
         }
     }
 
-    @Override
-    public BaseViewHolder<BannerData> createViewHolder(@NotNull ViewGroup parent, View itemView, int viewType) {
-        if (viewType == BannerData.TYPE_NEW) {
-            return new NewTypeViewHolder(itemView);
-        }
-        return new ServerImageViewHolder(itemView);
-    }
-
     @Override
     public int getLayoutId(int viewType) {
         if (viewType == BannerData.TYPE_NEW) {

+ 8 - 10
app/src/main/java/com/example/zhpan/banner/adapter/SimpleAdapter.kt

@@ -1,27 +1,25 @@
 package com.example.zhpan.banner.adapter
 
 import android.animation.ObjectAnimator
-import android.view.LayoutInflater
 import android.view.View
-import android.view.ViewGroup
 import android.widget.ImageView
 import com.example.zhpan.banner.R
 import com.example.zhpan.banner.bean.CustomBean
-import com.zhpan.bannerview.BaseSimpleAdapter
+import com.zhpan.bannerview.BaseBannerAdapter
 import com.zhpan.bannerview.BaseViewHolder
 
 /**
  * <pre>
  * Created by zhpan on 2020/4/5.
  * Description:
-</pre> *
+ * </pre>
  */
-class SimpleAdapter : BaseSimpleAdapter<CustomBean>() {
+class SimpleAdapter : BaseBannerAdapter<CustomBean>() {
 
     var mOnSubViewClickListener: OnSubViewClickListener? = null
 
     override fun bindData(holder: BaseViewHolder<CustomBean>, data: CustomBean?, position: Int, pageSize: Int) {
-        val imageStart: ImageView = holder.findView(R.id.iv_logo)
+        val imageStart: ImageView = holder.findViewById(R.id.iv_logo)
         holder.setImageResource(R.id.banner_image, data!!.imageRes)
         holder.setOnClickListener(R.id.iv_logo) { view: View? ->
             if (null != mOnSubViewClickListener) mOnSubViewClickListener!!.onViewClick(view, holder.adapterPosition)
@@ -31,11 +29,11 @@ class SimpleAdapter : BaseSimpleAdapter<CustomBean>() {
         alphaAnimator.start()
     }
 
-    interface OnSubViewClickListener {
-        fun onViewClick(view: View?, position: Int)
-    }
-
     override fun getLayoutId(viewType: Int): Int {
         return R.layout.item_custom_view;
     }
+
+    interface OnSubViewClickListener {
+        fun onViewClick(view: View?, position: Int)
+    }
 }

+ 6 - 6
app/src/main/java/com/example/zhpan/banner/adapter/ViewBindingSampleAdapter.java

@@ -2,7 +2,7 @@ package com.example.zhpan.banner.adapter;
 
 import com.example.zhpan.banner.R;
 import com.example.zhpan.banner.databinding.ItemSlideModeBinding;
-import com.zhpan.bannerview.BaseSimpleAdapter;
+import com.zhpan.bannerview.BaseBannerAdapter;
 import com.zhpan.bannerview.BaseViewHolder;
 
 /**
@@ -10,8 +10,8 @@ import com.zhpan.bannerview.BaseViewHolder;
  * @date 2020/12/11
  * Class 描述 : 使用ViewBinding示例
  */
-public class ViewBindingSampleAdapter extends BaseSimpleAdapter<Integer> {
-    //圆角
+public class ViewBindingSampleAdapter extends BaseBannerAdapter<Integer> {
+
     private final int mRoundCorner;
 
     public ViewBindingSampleAdapter(int roundCorner) {
@@ -21,9 +21,9 @@ public class ViewBindingSampleAdapter extends BaseSimpleAdapter<Integer> {
     @Override
     protected void bindData(BaseViewHolder<Integer> holder, Integer data, int position, int pageSize) {
         //示例使用ViewBinding
-        ItemSlideModeBinding itemViewBinding = ItemSlideModeBinding.bind(holder.itemView);
-        itemViewBinding.bannerImage.setRoundCorner(mRoundCorner);
-        itemViewBinding.bannerImage.setImageResource(data);
+        ItemSlideModeBinding viewBinding = ItemSlideModeBinding.bind(holder.itemView);
+        viewBinding.bannerImage.setRoundCorner(mRoundCorner);
+        viewBinding.bannerImage.setImageResource(data);
     }
 
     @Override

+ 5 - 2
app/src/main/java/com/example/zhpan/banner/adapter/others/ArticleAdapter.kt

@@ -14,7 +14,9 @@ import androidx.viewpager2.widget.ViewPager2
 import com.example.zhpan.banner.R
 import com.example.zhpan.banner.adapter.DataBindingSampleAdapter
 import com.example.zhpan.banner.bean.ArticleWrapper
+import com.example.zhpan.banner.net.BannerData
 import com.zhpan.bannerview.BannerViewPager
+import com.zhpan.bannerview.BaseViewHolder
 import com.zhpan.indicator.enums.IndicatorStyle
 
 import java.util.ArrayList
@@ -49,7 +51,8 @@ class ArticleAdapter(val context: Context, data: List<ArticleWrapper.Article>) :
                             ContextCompat.getColor(holder.itemView.context, R.color.red_checked_color))
                     .setOrientation(ViewPager2.ORIENTATION_VERTICAL)
                     .setInterval(2000)
-                    .setAdapter(DataBindingSampleAdapter()).create(article.pagers)
+                    .setAdapter(DataBindingSampleAdapter())
+                    .create(article.bannerData)
         } else if (holder is ArticleViewHolder) {
             holder.tvAuthor.text = article.author
             holder.tvTitle.text = article.title
@@ -77,7 +80,7 @@ class ArticleAdapter(val context: Context, data: List<ArticleWrapper.Article>) :
     }
 
     inner class BannerItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
-        var bannerViewPager: BannerViewPager<Int> = itemView.findViewById(R.id.banner_view3)
+        var bannerViewPager: BannerViewPager<BannerData> = itemView.findViewById(R.id.banner_view3)
         var resources: Resources = itemView.context.resources
 
         init {

+ 21 - 0
app/src/main/java/com/example/zhpan/banner/adapter/others/DataBindingAdapter.java

@@ -0,0 +1,21 @@
+package com.example.zhpan.banner.adapter.others;
+
+import android.widget.ImageView;
+
+import androidx.databinding.BindingAdapter;
+
+import com.bumptech.glide.Glide;
+
+
+/**
+ * <pre>
+ *   Created by zhpan on 2020/7/18.
+ *   Description:
+ * </pre>
+ */
+public class DataBindingAdapter {
+    @BindingAdapter(value = {"binding:url", "binding:placeholder"}, requireAll = false)
+    public static void bindUrl(ImageView imageView, String url, int placeholder) {
+        Glide.with(imageView).load(url).error(placeholder).placeholder(placeholder).into(imageView);
+    }
+}

+ 3 - 3
app/src/main/java/com/example/zhpan/banner/bean/ArticleWrapper.kt

@@ -1,5 +1,7 @@
 package com.example.zhpan.banner.bean
 
+import com.example.zhpan.banner.net.BannerData
+
 class ArticleWrapper {
 
     var datas: List<Article>? = null
@@ -15,8 +17,6 @@ class ArticleWrapper {
 
         var type: Int = 0
 
-        var pagers: List<Int>? = null
+        var bannerData: List<BannerData>? = null
     }
-
-
 }

+ 5 - 4
app/src/main/java/com/example/zhpan/banner/fragment/HomeFragment.java

@@ -119,6 +119,9 @@ public class HomeFragment extends BaseFragment {
                 .subscribe(new ResponseObserver<DataWrapper>() {
                     @Override
                     public void onSuccess(DataWrapper response) {
+                        ArticleWrapper.Article article = new ArticleWrapper.Article();
+                        article.setType(1001);
+                        article.setBannerData(new ArrayList<>(response.getDataBeanList()));
                         headerView.setVisibility(View.VISIBLE);
                         List<BannerData> dataList = response.getDataBeanList();
                         BannerData bannerData = new BannerData();
@@ -128,9 +131,7 @@ public class HomeFragment extends BaseFragment {
                         dataList.add(1, bannerData);
                         mViewPagerHorizontal.refreshData(dataList);
                         List<ArticleWrapper.Article> articleList = response.getArticleList();
-                        ArticleWrapper.Article article = new ArticleWrapper.Article();
-                        article.setType(1001);
-                        article.setPagers(getPicList(3));
+
                         articleList.add(4, article);
                         articleAdapter.setData(articleList);
                         recyclerView.getAdapter().notifyDataSetChanged();
@@ -196,7 +197,7 @@ public class HomeFragment extends BaseFragment {
                 .setAdapter(new ViewBindingSampleAdapter(0)).create(getPicList(4));
     }
 
-    private void onPageClicked(View clickedView,int position) {
+    private void onPageClicked(View clickedView, int position) {
         BannerData bannerData = mViewPagerHorizontal.getData().get(position);
         if (bannerData.getType() != TYPE_NEW) {
             if (getActivity() != null) {

+ 11 - 0
app/src/main/java/com/example/zhpan/banner/net/BannerData.java

@@ -1,5 +1,9 @@
 package com.example.zhpan.banner.net;
 
+import androidx.annotation.DrawableRes;
+
+import com.example.zhpan.banner.R;
+
 /**
  * <pre>
  *   Created by zhangpan on 2019-08-14.
@@ -30,6 +34,8 @@ public class BannerData {
     private int type;
     private String url;
     private int drawable;
+    private @DrawableRes
+    final int placeHolder = R.drawable.placeholder;
 
     public int getDrawable() {
         return drawable;
@@ -102,4 +108,9 @@ public class BannerData {
     public void setUrl(String url) {
         this.url = url;
     }
+
+    public @DrawableRes
+    int getPlaceHolder() {
+        return placeHolder;
+    }
 }

+ 0 - 22
app/src/main/java/com/example/zhpan/banner/viewholder/NewTypeViewHolder.java

@@ -1,22 +0,0 @@
-package com.example.zhpan.banner.viewholder;
-
-import android.view.View;
-
-import androidx.annotation.NonNull;
-
-import com.example.zhpan.banner.R;
-import com.example.zhpan.banner.net.BannerData;
-import com.zhpan.bannerview.BaseViewHolder;
-
-/**
- * <pre>
- *   Created by zhangpan on 2020/4/9.
- *   Description:
- * </pre>
- */
-public class NewTypeViewHolder extends BaseViewHolder<BannerData> {
-
-    public NewTypeViewHolder(@NonNull View itemView) {
-        super(itemView);
-    }
-}

+ 0 - 27
app/src/main/java/com/example/zhpan/banner/viewholder/ServerImageViewHolder.java

@@ -1,27 +0,0 @@
-package com.example.zhpan.banner.viewholder;
-
-import android.view.View;
-
-import androidx.annotation.NonNull;
-
-import com.bumptech.glide.Glide;
-import com.example.zhpan.banner.R;
-import com.example.zhpan.banner.net.BannerData;
-import com.example.zhpan.banner.view.CornerImageView;
-import com.zhpan.bannerview.BaseViewHolder;
-import com.zhpan.bannerview.utils.BannerUtils;
-
-/**
- * <pre>
- *   Created by zhangpan on 2019-08-14.
- *   Description:
- * </pre>
- */
-public class ServerImageViewHolder extends BaseViewHolder<BannerData> {
-
-    public ServerImageViewHolder(@NonNull View itemView) {
-        super(itemView);
-        CornerImageView imageView = findView(R.id.banner_image);
-        imageView.setRoundCorner(BannerUtils.dp2px(0));
-    }
-}

+ 12 - 12
app/src/main/res/layout/item_slide_model_data_binding.xml

@@ -1,20 +1,20 @@
 <?xml version="1.0" encoding="utf-8"?>
-<layout xmlns:android="http://schemas.android.com/apk/res/android">
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:binding="http://schemas.android.com/apk/res-auto">
 
     <data>
-
+        <variable
+            name="bannerData"
+            type="com.example.zhpan.banner.net.BannerData" />
     </data>
 
-    <RelativeLayout
+    <com.example.zhpan.banner.view.CornerImageView
+        android:id="@+id/banner_image"
         android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <com.example.zhpan.banner.view.CornerImageView
-            android:id="@+id/banner_image"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:contentDescription="@string/image_description"
-            android:scaleType="centerCrop" />
+        android:layout_height="match_parent"
+        android:contentDescription="@string/image_description"
+        android:scaleType="centerCrop"
+        binding:placeholder="@{bannerData.getPlaceHolder()}"
+        binding:url="@{bannerData.getImagePath()}" />
 
-    </RelativeLayout>
 </layout>

+ 5 - 7
bannerview/src/main/java/com/zhpan/bannerview/BannerViewPager.java

@@ -69,7 +69,7 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
 
     private final Handler mHandler = new Handler();
 
-    private BaseBannerAdapter<T, BaseViewHolder<T>> mBannerPagerAdapter;
+    private BaseBannerAdapter<T> mBannerPagerAdapter;
 
     private ViewPager2.OnPageChangeCallback onPageChangeCallback;
 
@@ -488,15 +488,13 @@ public class BannerViewPager<T> extends RelativeLayout implements LifecycleObser
         }
     }
 
-    @SuppressWarnings("unchecked")
-    public <VH extends BaseViewHolder<T>> BannerViewPager<T> setAdapter(BaseBannerAdapter<T, VH> adapter) {
-        this.mBannerPagerAdapter = (BaseBannerAdapter<T, BaseViewHolder<T>>) adapter;
+    public BannerViewPager<T> setAdapter(BaseBannerAdapter<T> adapter) {
+        this.mBannerPagerAdapter = adapter;
         return this;
     }
 
-    @SuppressWarnings("unchecked")
-    public <VH extends BaseViewHolder<T>> BaseBannerAdapter<T, VH> getAdapter() {
-        return (BaseBannerAdapter<T, VH>) mBannerPagerAdapter;
+    public BaseBannerAdapter<T> getAdapter() {
+        return mBannerPagerAdapter;
     }
 
     /**

+ 43 - 14
bannerview/src/main/java/com/zhpan/bannerview/BaseBannerAdapter.java

@@ -4,6 +4,7 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.annotation.LayoutRes;
 import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.RecyclerView;
 
@@ -15,7 +16,7 @@ import java.util.List;
 /**
  * Created by zhpan on 2017/3/28.
  */
-public abstract class BaseBannerAdapter<T, VH extends BaseViewHolder<T>> extends RecyclerView.Adapter<VH> {
+public abstract class BaseBannerAdapter<T> extends RecyclerView.Adapter<BaseViewHolder<T>> {
     protected List<T> mList = new ArrayList<>();
     private boolean isCanLoop;
     public static final int MAX_VALUE = 500;
@@ -23,37 +24,37 @@ public abstract class BaseBannerAdapter<T, VH extends BaseViewHolder<T>> extends
 
     @NonNull
     @Override
-    public final VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
-        View inflate = LayoutInflater.from(parent.getContext()).inflate(getLayoutId(viewType), parent, false);
-        return createViewHolder(parent, inflate, viewType);
+    public final BaseViewHolder<T> onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        View itemView = LayoutInflater.from(parent.getContext()).inflate(getLayoutId(viewType), parent, false);
+        return createViewHolder(parent, itemView, viewType);
     }
 
     @Override
-    public final void onBindViewHolder(@NonNull VH holder, final int position) {
-        int realPosition = BannerUtils.getRealPosition(isCanLoop, position, mList.size());
+    public final void onBindViewHolder(@NonNull BaseViewHolder<T> holder, final int position) {
+        int realPosition = BannerUtils.getRealPosition(isCanLoop, position, getListSize());
         holder.itemView.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View clickedView) {
                 if (mPageClickListener != null) {
-                    mPageClickListener.onPageClick(clickedView, BannerUtils.getRealPosition(isCanLoop, position, mList.size()));
+                    mPageClickListener.onPageClick(clickedView, BannerUtils.getRealPosition(isCanLoop, position, getListSize()));
                 }
             }
         });
-        bindData(holder, mList.get(realPosition), realPosition, mList.size());
+        bindData(holder, mList.get(realPosition), realPosition, getListSize());
     }
 
     @Override
     public final int getItemViewType(int position) {
-        int realPosition = BannerUtils.getRealPosition(isCanLoop, position, mList.size());
+        int realPosition = BannerUtils.getRealPosition(isCanLoop, position, getListSize());
         return getViewType(realPosition);
     }
 
     @Override
     public final int getItemCount() {
-        if (isCanLoop && mList.size() > 1) {
+        if (isCanLoop && getListSize() > 1) {
             return MAX_VALUE;
         } else {
-            return mList.size();
+            return getListSize();
         }
     }
 
@@ -84,9 +85,37 @@ public abstract class BaseBannerAdapter<T, VH extends BaseViewHolder<T>> extends
         return 0;
     }
 
-    protected abstract void bindData(VH holder, T data, int position, int pageSize);
+    public boolean isCanLoop() {
+        return isCanLoop;
+    }
 
-    public abstract VH createViewHolder(@NonNull ViewGroup parent, View itemView, int viewType);
+    /**
+     * Don't need override this method in subclass.
+     * This method calls {@link #onCreateViewHolder(ViewGroup, int)} to create a new{@link BaseViewHolder}
+     *
+     * @param parent   The ViewGroup into which the new View will be added after it is bound to
+     *                 an adapter position.
+     * @param itemView Item View.
+     * @param viewType The view type of the new View.
+     * @return ViewHolder extends {@link BaseViewHolder}.
+     */
+    public BaseViewHolder<T> createViewHolder(@NonNull ViewGroup parent, View itemView, int viewType) {
+        return new BaseViewHolder<>(itemView);
+    }
 
-    public abstract int getLayoutId(int viewType);
+    /**
+     * @param holder   The ViewHolder which should be updated to represent the contents of the
+     *                 item at the given position in the data set.
+     * @param data     Current item data.
+     * @param position Current item position.
+     * @param pageSize Page size of BVP,equals {@link BaseBannerAdapter#getListSize()}.
+     */
+    protected abstract void bindData(BaseViewHolder<T> holder, T data, int position, int pageSize);
+
+    /**
+     * @param viewType The view type of the new View.
+     * @return The item view layout.
+     */
+    public abstract @LayoutRes
+    int getLayoutId(int viewType);
 }

+ 0 - 20
bannerview/src/main/java/com/zhpan/bannerview/BaseSimpleAdapter.java

@@ -1,20 +0,0 @@
-package com.zhpan.bannerview;
-
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.NonNull;
-
-/**
- * @author DBoy
- * @date 2020/12/11
- * Description : A simple and easy to use adapter for BVP,
- * only single view type supported with this adapter.
- * Multiple view types need extends {@link BaseBannerAdapter}.
- */
-public abstract class BaseSimpleAdapter<T> extends BaseBannerAdapter<T, BaseViewHolder<T>> {
-    @Override
-    public BaseViewHolder<T> createViewHolder(@NonNull ViewGroup parent, View itemView, int viewType) {
-        return new BaseViewHolder<>(itemView);
-    }
-}

+ 9 - 9
bannerview/src/main/java/com/zhpan/bannerview/BaseViewHolder.java

@@ -36,7 +36,7 @@ public class BaseViewHolder<T> extends RecyclerView.ViewHolder {
     }
 
     @SuppressWarnings("unchecked")
-    public <V extends View> V findView(int viewId) {
+    public <V extends View> V findViewById(int viewId) {
         View view = mViews.get(viewId);
         if (view == null) {
             view = itemView.findViewById(viewId);
@@ -46,41 +46,41 @@ public class BaseViewHolder<T> extends RecyclerView.ViewHolder {
     }
 
 
-    public void setText(int viewId, String text) {
-        View view = findView(viewId);
+    public void setText(int viewId, CharSequence text) {
+        View view = findViewById(viewId);
         if (view instanceof TextView) {
             ((TextView) view).setText(text);
         }
     }
 
     public void setText(int viewId, @StringRes int textId) {
-        View view = findView(viewId);
+        View view = findViewById(viewId);
         if (view instanceof TextView) {
             ((TextView) view).setText(textId);
         }
     }
 
     public void setTextColor(int viewId, @ColorInt int colorId) {
-        View view = findView(viewId);
+        View view = findViewById(viewId);
         if (view instanceof TextView) {
             ((TextView) view).setTextColor(colorId);
         }
     }
 
     public void setOnClickListener(int viewId, View.OnClickListener clickListener) {
-        findView(viewId).setOnClickListener(clickListener);
+        findViewById(viewId).setOnClickListener(clickListener);
     }
 
     public void setBackgroundResource(int viewId, @DrawableRes int resId) {
-        findView(viewId).setBackgroundResource(resId);
+        findViewById(viewId).setBackgroundResource(resId);
     }
 
     public void setBackgroundColor(int viewId, @ColorInt int colorId) {
-        findView(viewId).setBackgroundColor(colorId);
+        findViewById(viewId).setBackgroundColor(colorId);
     }
 
     public void setImageResource(@IdRes int viewId, @DrawableRes int resId) {
-        View view = findView(viewId);
+        View view = findViewById(viewId);
         if (view instanceof ImageView) {
             ((ImageView) view).setImageResource(resId);
         }