RecycleView的不同类型Item点击事件

RecycleView的item点击事件,本次的例子是借助在别人的demo上增加了item的点击事件:
因为代码比较多,所以用别人的代码,做了一下改动,源码地址http://blog.csdn.net/qq199208/article/details/49386827
看效果,点击头部
这里写图片描述
点击通知位置在2,从0开始中间自定义了分割线,也算item
这里写图片描述
知道了位置我们就可以就行单击跳转工作:
改动之处
适配器,首先适配器要实现接口OnClickListener,并实现里面的方法,接着就是在适配器里面写一个借口:

 private OnRecyclerViewItemClickListener mOnItemClickListener = null;

    //define interface
    public static interface OnRecyclerViewItemClickListener {
        void onItemClick(View view, int position);
    }

同时在onCreateViewHolder()增加view.setOnClickListener(this);每种类型都写

 //创建viewholder
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //如果是头像区类型,则创建CenterHeadViewHolder类型的viewHolder
        if (viewType == ITEM_TYPE.ITEM_TYPE_HEAD.ordinal()) {
            //解析相对应的布局
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.center_head, null);
            CenterHeadViewHolder viewHolder = new CenterHeadViewHolder(view);
            view.setOnClickListener(this);
            return viewHolder;
        }

onBindViewHolder()方法绑定数据,我们要传出来一个position,就用到setTag()方法:

//绑定数据
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        //如果holder是CenterHeadViewHolder 的实例
        if (holder instanceof CenterHeadViewHolder) {
            CenterHeadItem centerHeadItem = (CenterHeadItem) mData.get(position).getT();
            //viewholder中参数要定义成public,要不不同包访问不到
            ((CenterHeadViewHolder) holder).mCircleImageView.setImageResource(centerHeadItem.getImg());
            ((CenterHeadViewHolder) holder).mTextView.setText(centerHeadItem.getName());
            ((CenterHeadViewHolder) holder).itemView.setTag(position);

        }

在OnClickListener实现的方法中传入position

 @Override
    public void onClick(View view) {
        if (mOnItemClickListener != null){
            mOnItemClickListener.onItemClick(view, (Integer) view.getTag());
        }
    }

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

剩下的就是在Activity中或者Fragment中设置点击事件了:

    mRecyclerView.setAdapter(adapter);
        adapter.setOnItemClickListener(new CenterRecycleViewAdapter.OnRecyclerViewItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                Toast.makeText(getActivity(),"单击了"+position,Toast.LENGTH_LONG).show();
                switch (position){
                //有了位置我们就可以实现跳转了,跳转内容就不写了
                //当然这些数字只适用我的工程中
                    case 0:
                        break;
                    case 2:
                        break;
                    case 3:
                        break;
                    case 4:
                        break;
                    case 6:
                        break;
                    case 7:
                        break;
                    case 9:
                        break;
                    case 10:
                        break;
                }
            }
        });
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值