关于 RecycleView 点击事件接口的定义

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);
}

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章