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);
}
这里就可以描述有两类不同的点击处理事件,接口可以适当的扩展,并采用泛型来定义数据源,以达到我们的业务需求。不知上面这种写法,你有什么看法吗?欢迎评论。