Android 回调机制

今天无意中看到了说java的回调机制,我感觉就和我以前用过的一样啊。。。所以就记录下来。。。

说说怎么接触到回调的。。

新出来一个Recyclerview,之前一直用的listview,因为是新的东西就想看看。。那时候没有什么开源的通用adapter像hongyang的。。listview设置item点击只要简单的 setItemClick就OK了。。但是recyclerview就没有给这个方法。。。之后各种找,什么setOnTouch。。。都试过,结果都不理想,最后在hongyang的博客里面说了一种设置一个接口,之后回调回去就行了,很简单。。但是对我这种java基础也不厉害的人来说还是研究了好久。。之后多用了几次,大概就明白是什么意思了。。

RecyclerView的item点击是怎么做的。。

在RecyclerView的adapter中有一个onBindViewHolder方法,一般绑定数据都是在这里绑定的,就是给item上面的TextVIew或者其他View设置数据,同时可以设置点击事件,当然也可以直接给item做点击,例如

viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//处理点击事件
}
});

但是处理代码在adapter中,不好和activity交互,这时候你就需要把 “处理点击事件” 放在activity中做处理。。
方法就是写一个接口类。。。例如

public interfac OnItemClickListener{
void onItemClick(View view);
}

定义一个OnImteClickListener的接口。。这个类里面的方法就是你要交给actvity处理的东西,比如说你要处理的就是这个Item,那就把View传给activity做处理,当然这个接口类OnItemClickListener你想放在adapter里面定义也可以,或者定义在外部,那样子他就可以给其他的地方也可以使用,定义好接口类以后,在adapter中先定这个接口
private OnItemClickListener onItemClickListener;
接着要实例化一个出来。。。实例化的时候不需要new一个出来,而是需要activity传一个进来。。。代码就是先在adapter中设置一个方法

public void setOnItemClickListener(OnItemClickListener onItemClickListener){
this.onItemClickListener = onItemClickListener;
}

这样子在activity初始化好adapter后,直接调用这个方法,就将实例化好的adapter传了进来,我们adapter中的接口是拿的activity中的。

adapter.setOnItemClickListener(new OnitemclickListener(){
public void onClick(View v) {
//处理点击事件
}
})

处理的方法就可以放在activity中做啦。。

大概就是这个处理过程吧。。。其实就是多用就好了,没事做的时候研究几分钟,研究几次就OK了。。以后碰到类似的地方就可以使用,很实用。。。。。
贴下图。。

Android 回调机制_第1张图片
Paste_Image.png
Android 回调机制_第2张图片

这个是Recyclerview设置点击的方式。。当然只是举例回调,学会了这种的话以后在其他地方就知道怎么使用了。。。

你可能感兴趣的:(Android 回调机制)