封裝RecycleView的 RecyclerView.Adapter的方式
目錄
一、BaseQuickAdapter的寫法
public abstract class BaseQuickAdapter<T> extends RecyclerView.Adapter<BaseViewHolder> { public BaseQuickAdapter(Context context, int layoutResID, List<T> data) { mContext = context; this.mLayoutResID = layoutResID; this.data = data; } @Override public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { final BaseViewHolder holder; final View itemView = LayoutInflater.from(mContext).inflate(mLayoutResID, parent, false); holder = new BaseViewHolder(itemView); return holder; } @Override public void onBindViewHolder(BaseViewHolder holder, int position) { convert(holder, mData.get(position)); } abstract void convert(BaseViewHolder holder, T item); }
1.1 用法:
在自己的Adapter中放置佈局,以後只需要實現convert抽象方法即可;
public class MovieQuickAdapter extends BaseQuickAdapter<MovieEntity.SubjectsBean> { private Context mContext; public MovieQuickAdapter(Context context, List<MovieEntity.SubjectsBean> data) { super(context, R.layout.rcv_item, data); mContext = context; } @Override protected void convert(BaseViewHolder holder, MovieEntity.SubjectsBean item) { //set TextView holder.setText(R.id.title, "片名:" + item.getTitle()) .setText(R.id.score, "評分:" + item.getRating().getAverage()) .setText(R.id.director, "導演:" + item.getDirectors().get(0).getName()) .setText(R.id.actor, "主演:" + item.getCasts().get(0).getName()) .setText(R.id.type, "型別:" + item.getGenres().toString()) .setText(R.id.year, "年份:" + item.getYear()) .setText(R.id.tv_num, holder.getLayoutPosition() + ""); //setImageView Glide.with(mContext).load(item.getImages().getMedium()).into((ImageView) holder.getView(R.id.iv)); } }
二、BaseViewHolder的寫法
public class BaseViewHolder extends RecyclerView.ViewHolder { private final SparseArray<View> views; private View convertView; public BaseViewHolder(View itemView) { super(itemView); this.views = new SparseArray<>(); convertView = itemView; } //根據id檢索獲得該View物件 private <T extends View> T retrieveView(int viewId) { View view = views.get(viewId); if (view == null) { view = convertView.findViewById(viewId); views.put(viewId, view); } return (T) view; } public BaseViewHolder setText(int viewId, CharSequence charSequence) { TextView textView = retrieveView(viewId); textView.setText(charSequence); return this; } public View getView(int viewId) { return retrieveView(viewId); } }
程式碼下載路徑:
相關推薦
封裝RecycleView的 RecyclerView.Adapter的方式
目錄 一、BaseQuickAdapter的寫法 public abstract class BaseQuickAdapter<T> extends RecyclerView.Adapter<BaseViewHolder>
基於 Multitype 開源庫封裝更好用的RecyclerView.Adapter
前言 MultiType 這個專案,至今 v3.x 穩定多時,考慮得非常多,但也做得非常剋制。原則一直是 直觀、靈活、可靠、簡單純粹(其中直觀和靈活是非常看重的)。 這是 MultiType 框架作者給出的專案簡述。 作為一個 RecyclerView 的 Adapter 框架,感覺這專案的設
封裝RecyclerView Adapter 實現可新增多個header和footer,可設定loadingView,低耦合的多種佈局。
多種佈局的recyclerview的普通寫法是重寫RecyclerView.Adapter的getItemViewType返回不同position上的type,在onCreateViewHolder(ViewGroup parent,int viewType
Android RecyclerView Adapter及Holder的封裝【原創】
專案中使用到了橫向的ListView樣子的功能,一開始使用Gallery做,由於Gallery的自帶彈性功能,效果不理想,於是使用網上的一些開源的橫向ListView,但是效果很卡, 最後使用了v7包中的RecyclerView,初次使用,不太熟練,對其進行了簡單的封裝
RecyclerView Adapter 優雅封裝,一個Adapter搞定所有列表
專案中,我們用得最多的元素就是列表了,在Android 中,實現列表用原生的RecyclerView就能滿足需求,關於RecyclerView 的基礎使用這裡不做過多的介紹,網上有太多的博文介紹了。本篇文章將介紹自己封裝的一個Adapter,幫你快速高效的新增一個列表(包
RecyclerView.Adapter結合ButterKnife封裝
public class BaseViewHolder extends RecyclerView.ViewHolder { View mView ; public BaseViewHo
RecyclerView Adapter簡單封裝
前言 今天是新年第一天,本來打算在上一年的最後一天寫下來的,但是由於玩的時間長了一點,所以今天才寫,算是在新的一年開一個好頭,新年新氣象嘛! 至於為什麼要寫這個文章吶!由於專案中以前都是用ListView實現的列表,很多東西都已經
Android 對封裝RecyclerView.Adapter講解
首先先得知RecyclerView.Adapter有什麼方法,這樣才知道與ListView的BaseAdapter有什麼區別: public class MyAdapter extends RecyclerView.Adapter { @Over
SP的封裝(數據持久化方式一)
存儲 etl xml文件 ava lang mini mode content xtend 1.先看一段描述: Interface for accessing and modifying preference data returned by Context.getShar
RecycleView呼叫adapter的notifyDataSetChanged()只能顯示一行資料
專案中用到RecycleView,在使用的過程中發現介面重新整理永遠只能顯示第一行,看了一兩個小時都沒有找到原因,後來在CSDN上發現了一篇部落格,完美的解決了這個問題,感謝博主,記錄一下,以免以後再次遇到。 https://blog.csdn.net/fantasiasango/article/
ajax非同步請求以及Jquery框架封裝的非同步請求方式
一、AJAX - 阿賈克斯 1、什麼是AJAX? Asynchronous Javascript And Xml 是可以建立快速動態網頁的技術。可以實現非同步更新,而不需要載入整個網頁,只加載需要更 新某部分網頁。
裝飾模式應用 為RecyclerView.Adapter新增上拉載入更多
這個包裝類主要有兩個關鍵點: 第一個是列表尾部新增一個條目,用於顯示各種載入的狀態,就是添加了一個特殊型別的holder。 第二個是監控列表滾動,滾動到我們新增的那個holder的時候,觸發我們需要的操作,比如修改holder裡的狀態文字等。 注意問題: 以前做過兩一個實
Struts2框架的資料封裝一之屬性封裝(屬性封裝的第二種方式:封裝成javaBean)
Struts2中提供了兩類資料封裝的方式? 第一種方式:屬性驅動(有兩種方式:一個對屬性,另外一個是將引數封裝到javaBean中) B. 在頁面上,使用OGNL表示式進行資料封裝。(將引數封裝到javaBean中) * 在頁面中使用OGNL表示式進行資料的封裝,就可以直接把屬性封
Struts2框架的數據封裝一之屬性封裝(屬性封裝的第二種方式:封裝成javaBean)
ava width ace exceptio override efault cut domain demo Struts2中提供了兩類數據封裝的方式? 第一種方式:屬性驅動(有兩種方式:一個對屬性,另外一個是將參數封裝到javaBean中) B. 在頁面上,使用
RecyclerView.Adapter介面卡通用化改造
RecyclerView 是谷歌給開發者的福利,比以往的ListView更加強大,效能更大,具體原始碼分析,我們下次講。本篇主要介紹如何在專案中提煉程式碼,增強它的適配性。下面就介紹我的思路。 首先一般編碼有如下幾個問題。 1.列表資料,需要寫一個RecyclerView.Adapter
繼承RecyclerView.Adapter使用泛型遇到的問題
轉自:http://my.oschina.net/buobao/blog/651007 在使用RecyclerView的時候遇到了一個很坑的問題,記錄這個大坑! 首先,在使用RecyclerView.Adapter的時候定義了一個BaseListAdapter,程式碼如下:
Android封裝多條目Adapter,方便快捷,便於維護
專案地址 :https://github.com/chaychan/MultipleItemRvAdapter 效果圖,我之前做過的精仿今日頭條,新聞列表中有好幾種佈局: Apk下載地址 請點選左下角“閱讀原文”對應位置下載。 Mul
ButterKnife結合RecyclerView.Adapter一起使用
直接上程式碼: @Override public MainHodler onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(pare
RecyclerView.Adapter優化了嗎?
昨天寫了一篇「還在用ListView?」講的內容是RecyclerView的使用技巧以及一些常用的開源庫,有朋友反饋“我已經在用recyclerview了”,那麼如何讓它更好用呢?此時我想到了優化RecyclerView.Adapter,因為在Recycl
Writing a RecyclerView Adapter in Kotlin (KAD 16)
An interesting way to see how Kotlin simplifies your life is by creating a RecyclerView Adapter. You’ll see that the code can be organized in such a