RecyclerView通用adapter以及item點選事件的實現
阿新 • • 發佈:2019-02-08
今天實現內容如下:
1.實現recyclerview通用的adapter CommonAdapter
2.實現recyclerview item的點選事件
先上效果圖
viewpager+fragment+viewpagerindicator實現整體框架,上圖中下面的類似GridView的圖片列表為要實現效果。
首先定義一個供CommonAdapter使用的ViewHolder
程式碼1(ViewHolder)
其中get方法先得到itemView,再通過ViewHolder構造器得到ViewHolder例項;
getView通過itemView.findViewById(子view的id)得到itemView中包括的子view;
getConvertView方法得到itemView(在get方法中將得到的itemVIew傳入了ViewHolder的構造器,而構造器總將itemView的值賦給了成員變數mConvertView);
程式碼2 (CommonFragmentAdapter:因專案中為為Fragment使用的adapter,但實際上是通用的)
在onCreateViewHolder中通過VIewHolder的get方法得到ViewHolder例項,通過ViewHolder的getConvertView方法得到recyclerview itemView,
給itemView設定監聽事件,最後返回ViewHolder例項;
在onBindViewHolder方法中呼叫了當前CommonFragmentAdapter中定義的抽象方法convert,並在此處得到當前itemView,並將position作為setTag
方法的實參傳入,此tag值用來確定點選了哪一個item,convert方法的作用在於例項化adapter時回掉此方法,此方法的引數即為當前ViewHolder例項
和當前資料集合中的資料。
定義一個OnRecyclerView介面,接口裡定義一個onItemClick方法,宣告一個介面變數mOnRecyclerViewListener,在itemView的onClick方法中,如果
mOnRecyclerView變數不為空,則呼叫mOnRecyclerView.onItemClick,並將當前itemView和getTag得到的position值傳入onItemClick方法。最後定義
一個setOnItemClickListener方法方便呼叫。這樣就實現了CommonAdapter的封裝和點選事件。
程式碼3 (fragment中使用)
例項化一個CommonFragmentAdapter,在回撥方法convert中處理業務邏輯,給recyclerView設定佈局管理器,此處為GridLayoutManager,將CommonFragmentAdapter例項設定給recyclerview,itemView點選事件通過
CommonFragmentAdapter.setOnItemCLickListener來實現。
程式設計師的魅力在於分享
參考了前輩鴻洋的部落格
原文連結 http://blog.csdn.net/lmj623565791/article/details/51118836