RecyclerView监听事件处理在ListView使用的时候,该控件给我们提供一个onItemClickListener监听器,这样当我们点击Item的时候,会回调相关的方法,以便我们方便处理Item点击事件。对于RecyclerView来讲,非常可惜的是,该控件没有给我们提供这样的内置监听器方法,不过我们可以进行改造实现,可以这样实现Item的点击事件的监听,在我们的adapter中增加下面这两个方法:
public interface OnItemClickListener{
void
onClick(
int
position);
void
onLongClick(
int
position);
}
public
void
setOnItemClickListener(OnItemClickListener onItemClickListener ){
this
.
mOnItemClickListener
=onItemClickListener;
}
然后在onBindViewHolder方法里做如下更改:
//填充onCreateViewHolder方法返回的holder中的控件 @Override public void onBindViewHolder(MyViewHolder myViewHolder, final int position) { myViewHolder.tv_item.setText(mDatas.get(position)); if( mOnItemClickListener!= null){ myViewHolder.itemView.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { mOnItemClickListener.onClick(position); } }); myViewHolder. itemView.setOnLongClickListener( new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { mOnItemClickListener.onLongClick(position); return false; } }); } } 在MainAcitivity中添加使用:
adapter.setOnItemClickListener(new RecyclerAdapter.OnItemClickListener() { @Override public void onClick(int position) { Toast.makeText(RecyclerViewTestActivity.this,"您点击了"+position+"行",Toast.LENGTH_SHORT).show(); } @Override public void onLongClick(int position) { Toast.makeText(RecyclerViewTestActivity.this,"您长按点击了"+position+"行",Toast.LENGTH_SHORT).show(); } });这样RecyclerView的Item的onClick和onLongClick事件就都被触发了。