首先在Adapter里面定义一个点击接口用于回调
public interface Click{
void onItemClick(int position,View itemView);
void onItemLongClick(int position,View itemView);
}
定义一个接口参数和一个设置这个参数的Set方法
private Click onClick;
public void setOnClick(Click click){
this.onClick=click;
}
在adapter里的onBindViewHolder中设置这个点击事件,其实就是在这里监听点击事件的,为每个item在点击的时候添加一个itemClick方法。
@Override
public void onBindViewHolder(@NonNull final adapter.ViewHolder viewHolder, int i) {
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onClick.onItemClick(viewHolder.getLayoutPosition(),viewHolder.itemView);
}
});
viewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
onClick.onItemLongClick(viewHolder.getLayoutPosition(),viewHolder.itemView);
return true;
}
});
}
最后在需要的地方继承这个接口,并且实现itemClick方法即可
public class DemoActivity extends AppCompatActivity implements adapter.Click{
adapter adapter=new adapter();
adapter.setOnClick(this);
@Override
public void onItemClick(int position, View itemView) {
Toast.makeText(this,"点击",Toast.LENGTH_SHORT).show();
//点击事件
}
@Override
public void onItemLongClick(int position, View itemView) {
Toast.makeText(this,"长按",Toast.LENGTH_SHORT).show();
//长按事件
}
}