RecycleView 的點擊事件,一般是通過定義接口實現,接口定義如下:
/**
* 一般的RecycleView點擊事件接口
*
* @param <K> 數據源
*/
public interface CommonOnRecycleViewItemClickListener<K> {
void CommonOnRecycleViewItemClick(View view, int position, K dataSource);
}
描述一個場景:
如果有一個頁面,含有兩個以上的不同佈局的RecycleView(這裏就認爲產品要求必須要按這樣實現),而且兩個RecycleView佈局不是相鄰的,總之,先認爲 :是不能在一個adapter裏面通過ViewType來區分顯示不同的佈局,只能分開來寫各自的adapter。那麼這每個RecycleView的點擊事件,如何定義呢?
這裏給一個參考:
/**
* 首頁點擊事件的接口
*
* @param <T>
* @param <K>
*/
public interface FirstPageOnRecyclerViewItemClickListener<T, K> extends CommonOnRecycleViewItemClickListener<K> {
/**
* 業務類型
*/
enum BusinessType {
Default,//不區分,適合只有一個adapter 的情況
PerfectCourse,//精品課程
NewCourse//新課程
}
/**
* 點擊事件
*
* @param view
* @param position
* @param mDataK 數據源
*/
void mRecyclerViewOnItemClick(View view, int position, T mDataK, BusinessType businessType);
}
這裏就可以描述有兩類不同的點擊處理事件,接口可以適當的擴展,並採用泛型來定義數據源,以達到我們的業務需求。不知上面這種寫法,你有什麼看法嗎?歡迎評論。