[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));
}
});
二、背景选择器
添加点击效果:可以自定义选择器
为item的背景添加:安卓自带波纹样式的选择器
//有边界
android:background="?android:attr/selectableItemBackground"
//无边界
android:background="?android:attr/selectableItemBackgroundBorderless"
也可以自定义水波纹的样式:
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);
}
});
后记、
1.声明:
[1]本文由张风捷特烈原创,转载请注明
[2]欢迎广大编程爱好者共同交流
[3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正
[4]你的喜欢与支持将是我最大的动力
2.连接传送门:
更多安卓技术欢迎访问:安卓技术栈
我的github地址:欢迎star
简书首发,腾讯云+社区同步更新
张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com
3.联系我
QQ:1981462002
邮箱:1981462002@qq.com
微信:zdl1994328