经过了上一节的学习,相信大家对强大的RecyclerView有个初步的认识,但是比较蛋疼的是RecyclerView竟然不支持点击事件和长按事件,接下来就有我为大家用一种比较简单的方法来实现点击事件和长按事件。
先看效果图:
---------------------------------------------华丽的分割线-----------------------------------------------------------------------
实现起来其实也是很容易的,在adapter里面写一个监听,在Adapter对象上实现回调就可以了。
接下来开始撸代码实现:
private OnItemClickListener mOnItemClickListener;
public void setOnItemClickListener(OnItemClickListener clickListener) {
this.mOnItemClickListener = clickListener;
}
public interface OnItemClickListener {
void onItemClick(View view, int position);
}
在bindview里面实现view的点击事件(切记mOnItemClickListener一定要判断是否为空):
@Override
public void onBindViewHolder(MyRecyclerAdapter.MyViewHolder holder, final int position) {
holder.tv.setText(mList.get(position));
if (mOnItemClickListener != null) {
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mOnItemClickListener.onItemClick(v, position);
}
});
}
}
mAdapter.setOnItemClickListener(new MyRecyclerAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Toast.makeText(MainActivity.this, "你点击了" + position + "个", Toast.LENGTH_SHORT).show();
}
});
点击事件到此完成!
---------------------------------------------华丽的分割线-----------------------------------------------------------------------
接下来快速完成长按事件:
private OnItemLongClickListener mOnItemLongClickListener;
public void setOnItemLongClickListener(OnItemLongClickListener longClickListener) {
this.mOnItemLongClickListener = longClickListener;
}
public interface OnItemLongClickListener {
void onItemLongClick(View view, int position);
}
同样在bindView里面实现长按事件
@Override
public void onBindViewHolder(MyRecyclerAdapter.MyViewHolder holder, final int position) {
holder.tv.setText(mList.get(position));
if (mOnItemClickListener != null) {
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
mOnItemLongClickListener.onItemLongClick(v, position);
return true;//默认返回false
}
});
}
}
在Adapter对象上添加监听回调:
mAdapter.setOnItemLongClickListener(new MyRecyclerAdapter.OnItemLongClickListener() {
@Override
public void onItemLongClick(View view, int position) {
Toast.makeText(MainActivity.this, "你长按" + position + "个", Toast.LENGTH_SHORT).show();
}
});
大功告成!!!
--------------------------------------------- 华丽的分割线-----------------------------------------------------------------------
下一节继续给大家带来RecyclerView在使用上的小技巧。。。