【菜鸟之路】RecyclerView添加Item点击事件
来源:互联网 发布:2k16本西蒙斯捏脸数据 编辑:程序博客网 时间:2024/06/09 19:03
今天下午继续在项目中学着做RecyclerView,想给每个Item添加一个点击跳转,翻了翻买的两本书发现没有呃,只能百度+看看网上前辈们的代码了。
翻了一些比较不错的文章,了解到大概的几种实现方法:
1.通过RecyclerView中预留的addOnItemTouchListener()方法
2.在Adapter创建ItemView时添加事件监听
3.当ItemView attach RecyclerView时实现
(出处http://blog.devwiki.net/index.php/2016/07/24/three-ways-click-recyclerview-item.html?utm_source=tuicool&utm_medium=referral)
第1,3种实现在单独的类中,可以使代码更简洁。第2种方法更简单实现,我先试了一下该方法,用在了最近的项目里面(项目地址:http://github.com/LAILAIWA/Slinky2)
这里我写在了我的Fragment的initData()里面,设置适配器的后面
//添加监听回调 mAdapter.setClickListener(new GeneralAdapter.ItemClickListener(){ @Override public void OnItemClick(View view, int position) { Log.e("-----Item clicked-----",String.valueOf(position)); Toast.makeText(getActivity(), "Item " + position + " clicked:", Toast.LENGTH_SHORT).show(); //跳转动作 } });
更改了之前写的adapter
public class GeneralAdapter extends RecyclerView.Adapter<GeneralAdapter.MyViewHolder> { private List<team> mDatas; private LayoutInflater mInflater; private ItemClickListener ClickListener; public GeneralAdapter(Context context, List<team> mDatas) { this.mDatas = mDatas; mInflater = LayoutInflater.from(context); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { MyViewHolder holder = new MyViewHolder(mInflater.inflate( R.layout.item_common_adapter, parent, false)); return holder; } @Override public void onBindViewHolder(final MyViewHolder holder, final int position) { //为holde设置指定数据,将数据绑定到每一个childView中 team tdata = mDatas.get(position); holder.tvTeamTitle.setText(tdata.title); holder.tvTeamInfo.setText(tdata.charge1); holder.tvTeamType.setText(tdata.type); //创建view时添加监听事件 if(ClickListener != null){ holder.tvTeamTitle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ClickListener.OnItemClick(view,position); } }); holder.tvTeamInfo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ClickListener.OnItemClick(view,position); } }); holder.tvTeamType.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ClickListener.OnItemClick(view,position); } }); } } public GeneralAdapter setClickListener(ItemClickListener ClickListener){ this.ClickListener = ClickListener; return this; } @Override public int getItemCount() { return mDatas.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { TextView tvTeamTitle; TextView tvTeamInfo; TextView tvTeamType; public MyViewHolder(View view) { super(view); tvTeamTitle = (TextView) view.findViewById(R.id.text_team_title); tvTeamInfo = (TextView) view.findViewById(R.id.text_team_info); tvTeamType = (TextView) view.findViewById(R.id.text_team_type); } } public interface ItemClickListener{ //声明接口ItemClickListener void OnItemClick(View view,int position);// void OnTitleClick(View view,int position);// void OnInfoClick(View view,int position);// void OnTypeClick(View view,int position); }}
0 0
- 【菜鸟之路】RecyclerView添加Item点击事件
- Android 技术之为RecyclerView添加item的点击事件
- RecyclerView 给Item添加点击事件
- RecyclerView + CardView 添加Item点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 为RecyclerView添加item的点击事件
- 给RecyclerView的Item添加点击事件
- RecyclerView添加Item的点击事件
- 为RecyclerView添加item的点击事件
- 对RecyclerView的item添加点击事件
- Android RecyclerView给Item添加点击事件
- RecyclerView为每个item添加点击事件
- 为RecyclerView添加item的点击事件
- Mysql 子查询 出现 Every derived table must have its own alias 错误
- 【数据结构】忘了的一些C语言常识
- dpkg 被中断,您必须手工运行 sudo dpkg –configure -a解决此问题
- 3.16学习内容
- Hadoop之——hadoop下配置文件说明
- 【菜鸟之路】RecyclerView添加Item点击事件
- Vulkan编程指南翻译 第七章 图形管线 第3节 帧缓冲区
- Python机器学习库SKLearn:监督学习之广义线性模型
- 书籍记录
- HDU1426
- 引用传递
- CodeForces 724B(暴力枚举)
- 高通8x25平台display模块总结
- struts2各个jar包的作用