前言
小白篇,哈哈,我也是小白,慢慢积累
原理
就是接口回调,可以看到这是我们平时使用的 点击事件,仿照他去写
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
实现
(1) 在Recycler的适配器中定义接口,如下
//第一步 定义接口
public interface OnItemClickListener {
void onClick(int position);
}
private OnItemClickListener listener;
//第二步, 写一个公共的方法
public void setOnItemClickListener(OnItemClickListener listener) {
this.listener = listener;
}
public interface OnItemLongClickListener {
void onClick(int position);
}
private OnItemLongClickListener longClickListener;
public void setOnItemLongClickListener(OnItemLongClickListener longClickListener) {
this.longClickListener = longClickListener;
}
(2) 在适配器的onBindViewHolder方法中,实现接口回调,如下
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null) {
listener.onClick(position);
}
}
});
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if (longClickListener != null) {
longClickListener.onClick(position);
}
return true;
}
});
}
(3) 如何使用
使用适配器的对象,调用其内部自己写的方法
myAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
@Override
public void onClick(int position) {
Toast.makeText(MainActivity.this, "click " + position, Toast.LENGTH_SHORT).show();
}
});
myAdapter.setOnItemLongClickListener(new MyAdapter.OnItemLongClickListener() {
@Override
public void onClick(int position) {
Toast.makeText(MainActivity.this, "long click " + position, Toast.LENGTH_SHORT).show();
}
});