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
- RecycleView的不同类型Item点击事件
- RecycleView不同类型Item&添加HeaderView&条目点击事件
- RecycleView的Item点击事件
- RecycleView显示不同类型的Item
- RecycleView加载不同类型的Item
- RecycleView如何实现item的点击事件
- Android-RecycleView的item点击事件
- RecycleView 列表的item点击事件
- RecycleView 添加item点击事件
- Recycleview添加item点击事件
- RecycleView的使用,并添加子item的点击事件
- Recycleview的点击事件
- RecycleView的点击事件
- Recycleview的点击事件
- RecycleView(BaseViewHolder+BaseAdapter+不同类型适配+点击事件)
- RecycleView的通用适配器BaseQuickAdapter处理item中子控件的点击事件以及cardview卡片阴影
- Android databinding RecycleView item 子控件点击事件
- 封装Recycleview.Adapter使Recycleview具有加载更多,item点击事件等功能
- 树形DP
- MAT File I/O 库txt文件生成mat格式
- 基于 RESTful 标准的 Web Api
- JAVA成员变量和静态变量的区别
- Codeforces Round #366 (Div. 1) D Captain America 网络流
- RecycleView的不同类型Item点击事件
- Python 函数的参数传递(2)
- MVC+Easyui tree菜单导航静态(8)
- java学习笔记(二)
- disconf简单例子(maven)
- oc中的oop
- Java集合容器优化
- Java HashSet详解
- python协程