接口回调
**1.提供接口,传递接口对象**
OnItemClickListener onItemClickListener; //ma
public void setOnItemClickListener(OnItemClickListener onItemClickListener){// onItemClickListener外界传进来 ma
this.onItemClickListener = onItemClickListener;
}
接口
public interface OnItemClickListener{
void onItemClick(View view, ViewHolder viewHolder, int position);
}
2.实现接口,重写接口的实现方法
在Activity页面用adapter设置监听事件
adapter.setOnItemClickListener(this);
//被回调时用到的接口放
@Override
public void onItemClick(View view, MyAdapter.ViewHolder viewHolder, int position) {
Toast.makeText(MainActivity.this,list.get(position).toString(),Toast.LENGTH_LONG).show();;
}
3.接口回调
在onCreateViewHolder()方法中用view控件调用setOnItemClickListener方法
调用传进来接口的方法,实现调用
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = viewHolder.getAdapterPosition();
if(onItemClickListener!=null){
onItemClickListener.onItemClick(view,viewHolder,position);
}
}
});
接口回调的注意事项
接口则是抽象类更彻底的抽象;
接口是一种规范,接口规定了实现者必须向外提供哪些服务,对于接口的调用者,调用者要掉哪些方法
例如:
【修饰符】 interface 接口名 extends 父接口1、父接口2…..
说明:
修饰符可以是public或者省略,如果省略了public 访问控制符,则默认采用包访问控制符,只有在相同包下面才能访问还接口;
接口名应该与类名命名相同;
一个接口可以有多个父接口,一个接口可以继承多个接口,但是不能继承类;
接口里面可以包含Filed(常量),方法(只能抽象的实例方法),内部类(内部类接口,枚举类);
接口里面修饰Filed(常量),方法(只能抽象的实例方法),内部类(内部类接口,枚举类);只能用public和包级别的修饰符;
接口中定义常量:
int M=1; //系统会默认在前面加上public static final
public static final M=1;
这两种定义的常量是相等的;接口里面没有构造器和初始化块,因为Filed只能在定义的时候默认值;
因为接口里面的方法都是抽象的方法,因此不能用static 去修饰方法;
接口里面的方法:
void get();
public abstract void get();
上面的这两种方法是相等的;