上文 http://blog.csdn.net/rong_wz/article/details/51107440讲解了回调函数在java中的场景,本文介绍自己的android应用中的使用。
场景:
假如有一listView,里面是游戏列表,在listView的item中有个button,点击此button可以有相应逻辑,比如打开相应游戏,当然可以在listView的Adapter中去实现,但此处,使用回调,在Activity或Fragment中实现,这就需要回调。
首先定义一个接口:
public interface GameAdapterClickListener{
void onItemClick(AppInfoResult info, int pos );
void onItemClick(AppInfoResult into, View v, int pos);
}
接着,在Adapter中,应该有一上面接口的变量,mListener,定义如下:
GameAdapterClickListener mListener;
并有注册方法:
public void registerListener(GameAdapterClickListener listener){
mListener = listener;
}
button点击时的响应方法,调用对应的mListener的响应:
holder.button.setOnClickListener(new OnClickListener(){
if(mListener != null){
mListener.onItemClick( mList.get(position), position);
}
});
最后,在Fragment或Activity中实现对应接口,并设置进Adapter。
此处使用Fragment:
... GamesFragment implements GameAdapterClickListener{
...
//adapter注册
mGamesAdapter.register(this);
//下面是方法具体实现:
@Override
public void onItemClick(AppInfoResult info , View v, int pos){
//跳转逻辑 省略
}
@Override
pubic void onItemClick(AppInfoResult info, int pos){
//逻辑,省略
}
}
这样就实现了回调的使用。(完)