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

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

 

RecyclerView的item点击事件可以通过设置RecyclerView的OnItemClickListener来实现。具体步骤如下: 1. 在RecyclerView的Adapter中定义一个接口OnItemClickListener,用于回调item的点击事件。 2. 在Adapter的ViewHolder中设置item的点击事件,当item被点击时,调用OnItemClickListener的回调方法。 3. 在RecyclerView的Activity或Fragment中实现OnItemClickListener接口,处理item的点击事件。 示例代码如下: 1. Adapter中定义OnItemClickListener接口 public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> mData; private OnItemClickListener mOnItemClickListener; public interface OnItemClickListener { void onItemClick(View view, int position); } public void setOnItemClickListener(OnItemClickListener listener) { mOnItemClickListener = listener; } // ... public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { public ViewHolder(View itemView) { super(itemView); itemView.setOnClickListener(this); } @Override public void onClick(View v) { if (mOnItemClickListener != null) { mOnItemClickListener.onItemClick(v, getAdapterPosition()); } } } } 2. RecyclerView的Activity或Fragment中实现OnItemClickListener接口 public class MainActivity extends AppCompatActivity implements MyAdapter.OnItemClickListener { private RecyclerView mRecyclerView; private MyAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mRecyclerView = findViewById(R.id.recycler_view); mAdapter = new MyAdapter(getData()); mAdapter.setOnItemClickListener(this); mRecyclerView.setAdapter(mAdapter); } @Override public void onItemClick(View view, int position) { // 处理item的点击事件 } } 注意:RecyclerView的item点击事件也可以通过设置item的OnClickListener来实现,但是这种方式需要在ViewHolder中手动设置item的点击事件,不太方便。建议使用上述方式来实现RecyclerView的item点击事件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值