RecycleView的不同类型Item点击事件

来源:互联网 发布:容迟网络 编辑:程序博客网 时间:2024/05/22 00:39

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 0
原创粉丝点击