1. 程式人生 > >RecyclerView通用adapter以及item點選事件的實現

RecyclerView通用adapter以及item點選事件的實現

  今天實現內容如下: 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