RecyclerView 给Item添加点击事件


转载:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1118/2004.html


添加点击事件

上一节中我们讲了如何使用RecyclerView的Adpater,其实我们会发现,Adapter是添加点击事件一个很好的地方,里面是构造布局等View的主要场所,也是数据和布局进行绑定的地方。首先我们在Adapter中创建一个实现点击接口,其中view是点击的Item,data是我们的数据,因为我们想知道我点击的区域部分的数据是什么,以便我下一步进行操作:

public static interface OnRecyclerViewItemClickListener {
    void onItemClick(View view , DataModel data);
}



定义完接口,添加接口和设置Adapter接口的方法:

private OnRecyclerViewItemClickListener mOnItemClickListener = null;
    public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
    this.mOnItemClickListener = listener;
}


那么这个接口用在什么地方呢?如下代码所示,我们为Adapter实现OnClickListener方法:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> implements View.OnClickListener{
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup viewGroup, final int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item, viewGroup, false);
        ViewHolder vh = new ViewHolder(view);
        //将创建的View注册点击事件
        view.setOnClickListener(this);
        return vh;
    }
    @Override
    public void onBindViewHolder(ViewHolder viewHolder, final int i) {
        viewHolder.mTextView.setText(datas.get(i).title);
        //将数据保存在itemView的Tag中,以便点击时进行获取
        viewHolder.itemView.setTag(datas.get(i));
    }
    ...
    @Override
    public void onClick(View v) {
        if (mOnItemClickListener != null) {
            //注意这里使用getTag方法获取数据
            mOnItemClickListener.onItemClick(v,(DataModel)v.getTag());
        }
    }
    ...
}


做完这些事情,我们就可以在Activity或其他地方为RecyclerView添加项目点击事件了,如在MainActivity中:

mAdapter = new MyAdapter(getDummyDatas());
mRecyclerView.setAdapter(mAdapter);
mAdapter.setOnItemClickListener(new MyAdapter.OnRecyclerViewItemClickListener() {
    @Override
    public void onItemClick(View view, DataModel data) {
        //DO your fucking bussiness here!
    }
});


完成了以上代码就可以为RecyclerView添加项目点击事件了,下面我们来看看RecyclerView如何添加和删除数据并在界面上显示。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值