2-VII-RecyclerView事件

mac2022-06-30  113

[1].本文接上文:RecyclerView基本使用 [2].RecyclerView把很多事都交给了我们,就连item的点击事件都没有 [3].在adapter中加载布局的时候,可以为item添加事件 [4].没有点击效果,还要自己添加点击的选择器 [5].RecyclerView增删条目以及条目运动效果


一、点击事件

方式1.修改:FirstRvAdapter#onCreateViewHolder
public FirstViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //加载布局文件 View itemView = LayoutInflater.from(mCtx).inflate(R.layout.item_rv, null); final FirstViewHolder holder = new FirstViewHolder(itemView); //点击监听 itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ToastUtil.showAtOnce(mCtx, "Position:"+holder.getLayoutPosition()); } }); return holder; }
方式2:可以添加回调,将事件推到Activity中
1.FirstRvAdapter中监听点击事件
public FirstViewHolder onCreateViewHolder(final ViewGroup parent, int viewType) { //加载布局文件 final View itemView = LayoutInflater.from(mCtx).inflate(R.layout.item_rv, null); final FirstViewHolder holder = new FirstViewHolder(itemView); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mOnItemClickListener != null) { mOnItemClickListener.onclick(itemView, parent, holder.getLayoutPosition()); } } }); return holder; } /条目点击监听/ public interface OnItemClickListener { void onclick(View itemView, ViewGroup parent, int position); } private OnItemClickListener mOnItemClickListener; public void setOnItemClickListener(OnItemClickListener onItemClickListener) { mOnItemClickListener = onItemClickListener; }
2.Activity中使用:
mAdapter.setOnItemClickListener(new FirstRvAdapter.OnItemClickListener() { @Override public void onclick(View itemView, ViewGroup parent, int position) { ToastUtil.showAtOnce(DiverRVActivity.this, mData.get(position)); } }); rv点击1.gif

二、背景选择器

添加点击效果:可以自定义选择器

为item的背景添加:安卓自带波纹样式的选择器

//有边界 android:background="?android:attr/selectableItemBackground" //无边界 android:background="?android:attr/selectableItemBackgroundBorderless" rv点击2.gif
也可以自定义水波纹的样式:

v21及以上有效果

<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/gray"><!-- press和水波纹的颜色 --> <item> <!--item中可以自定义shape--> <shape android:innerRadius="5dp" android:shape="rectangle"> <solid android:color="@color/white"/> <corners android:radius="1dp"/> </shape> </item> </ripple>

v21以下无效果

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/colorPrimaryDark" android:state_pressed="true"/> <item android:drawable="@color/colorPrimary"/> </selector>

三、添加与删除:效果是单机添加,长按删除

1.FirstRvAdapter中照样子添加长按监听:
/条目长按监听/ public interface OnItemLongClickListener { void onLongClick(View itemView, ViewGroup parent, int position); } private OnItemLongClickListener mOnItemLongClickListener; public void setOnItemLongClickListener(OnItemLongClickListener onItemLongClickListener) { mOnItemLongClickListener = onItemLongClickListener; }
2.FirstRvAdapter添加删除与添加方法:
/** * 添加item * * @param i 位置 * @param str 值 */ public void addData(int i, String str) { data.add(i, str); notifyItemInserted(i);//刷新数据 } /** * 删除item * * @param i 位置 */ public void deleteData(int i) { data.remove(i); notifyItemRemoved(i);//刷新数据 }
3.Activity中使用:
mAdapter.setOnItemClickListener(new FirstRvAdapter.OnItemClickListener() { @Override public void onclick(View itemView, ViewGroup parent, int position) { mAdapter.addData(position, ZRandom.randomCnName()); mRecyclerView.scrollToPosition(0);//滑动到某个条目 } }); mAdapter.setOnItemLongClickListener(new FirstRvAdapter.OnItemLongClickListener() { @Override public void onLongClick(View itemView, ViewGroup parent, int position) { mAdapter.deleteData(position); } }); 增加与删除.gif

后记、

1.声明:

[1]本文由张风捷特烈原创,转载请注明 [2]欢迎广大编程爱好者共同交流 [3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正 [4]你的喜欢与支持将是我最大的动力

2.连接传送门:

更多安卓技术欢迎访问:安卓技术栈 我的github地址:欢迎star 简书首发,腾讯云+社区同步更新张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com

3.联系我

QQ:1981462002 邮箱:1981462002@qq.com 微信:zdl1994328

4.欢迎关注我的微信公众号,最新精彩文章,及时送达:
公众号.jpg

转载于:https://www.cnblogs.com/toly-top/p/9781913.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)