1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java web自定义监听器_Android自定义监听器Listener(自定义Java Callback回调事件)

java web自定义监听器_Android自定义监听器Listener(自定义Java Callback回调事件)

时间:2023-06-21 12:30:03

相关推荐

java web自定义监听器_Android自定义监听器Listener(自定义Java Callback回调事件)

Callback回调事件介绍

Java或Android中创建异步回调最普遍的做法就是使用listener监听器或者observer观察者模式来解决,listener回调事件通常用于实现一个代码去监听另一个类或方法发生的事情,Android中的监听器listener最流行的莫过于Button按钮的OnClickListener了,下面来开始学习吧!

先来看看Button的onClick事件的代码吧!ButtonbtnExample=(Button)findViewById(R.id.btnExample);

btnExample.setOnClickListener(newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

//Dosomethinghere

}

});

如何自定义Android回调事件

我们要做一个类似于Button按钮的回调事件,该如何做呢?先来看自定义listener监听事件的步骤:

1:定义一个接口

2:父类中设置一个成员变量,以及setter方法

3:实现监听事件内部的接口

4:触发Java监听事件

一:定义一个监听事件接口:publicclassMyCustomObject{

//Step1-ThisinterfacedefinesthetypeofmessagesIwanttocommunicatetomyowner

publicinterfaceMyCustomObjectListener{

publicvoidonObjectReady(Stringtitle);

publicvoidonDataLoaded(SomeDatadata);

}

}

二:创建Listener成员变量,代码如下:publicclassMyCustomObject{

//...

//Step2-Thisvariablerepresentsthelistenerpassedinbytheowningobject

//Thelistenermustimplementtheeventsinterfaceandpassesmessagesuptotheparent.

privateMyCustomObjectListenerlistener;

}

在父类中添加setter方法,代码如下:publicclassMyCustomObject{

//Constructorwherelistenereventsareignored

publicMyCustomObject(){

//setnullordefaultlisteneroracceptasargumenttoconstructor

this.listener=null;

}

//Assignthelistenerimplementingeventsinterfacethatwillreceivetheevents

publicvoidsetCustomObjectListener(MyCustomObjectListenerlistener){

this.listener=listener;

}

}

三:在别的类中实现监听事件内部的接口publicclassMyParentActivityextendsActivity{

@Override

protectedvoidonCreate(BundlesavedInstanceState){

object.setCustomObjectListener(newMyCustomObject.MyCustomObjectListener(){

@Override

publicvoidonObjectReady(Stringtitle){

//Codetohandleobjectready

}

@Override

publicvoidonDataLoaded(SomeDatadata){

//Codetohandledataloadedfromnetwork

//Usethedatahere!

}

});

}

}

四:触发Callback监听事件:publicclassMyCustomObject{

//Listenerdefinedearlier

publicinterfaceMyCustomObjectListener{

publicvoidonObjectReady(Stringtitle);

publicvoidonDataLoaded(SomeDatadata);

}

//Membervariablewasdefinedearlier

privateMyCustomObjectListenerlistener;

publicMyCustomObject(){

//setnullordefaultlisteneroracceptasargumenttoconstructor

this.listener=null;

loadDataAsync();

}

//...setterdefinedhereasshownearlier

//假如这是一个网络加载事件

publicvoidloadDataAsync(){

AsyncHttpClientclient=newAsyncHttpClient();

client.get("/data/get.json",newJsonHttpResponseHandler(){

@Override

publicvoidonSuccess(intstatusCode,Header[]headers,JSONObjectresponse){

SomeDatadata=SomeData.processData(response.get("data"));

//触发Java监听事件

if(listener!=null)

listener.onDataLoaded(data);//

}

});

}

}

总结

会“Android自定义监听器Listener(自定义Java Callback回调事件)”是很有必要的,java监听事件通常用于异步网络加载,Android activity或fragment之间的参数传递,事件回调等,很有必要!

Java接口回调的几种方式

1:通过方法来回调监听事件

2:通过构造器来回调监听事件

3:通过lifecycle生命周期来回调参数

一:通过方法来回调监听事件

下方演示的是通过接口方法来回调listener监听事件,代码如下://在父类方法中

childObject.setCustomObjectListener(newMyCustomObject.MyCustomObjectListener(){

@Override

publicvoidonObjectReady(Stringtitle){

//Codetohandleobjectready

}

});

我们在MyCustomObject父类中是这样定义的,代码://Insidethechildobject

privateMyCustomObjectListenerlistener;

//将接口作为参数传入方法中

publicvoidsetCustomObjectListener(MyCustomObjectListenerlistener){

this.listener=listener;

}

二:通过构造器来回调监听事件

将接口作为参数放在MyCustomObject父类的构造方法中,代码如下://Insidethechildobject

privateMyCustomObjectListenerlistener;

//将接口放在构造方法中

publicMyCustomObject(MyCustomObjectListenerlistener){

this.listener=listener;

}

我们可以在创建父类对象时,这样使用构造器回调,代码如下://Insidetheparentobject

MyCustomObjectobject=newMyCustomObject(newMyCustomObject.MyCustomObjectListener(){

@Override

publicvoidonObjectReady(Stringtitle){

//Codetohandleobjectready

});

});

三:通过lifecycle生命周期来回调接口,一般是在另外一个类中直接实现接口类就行了publicclassMyListFragmentextendsFragment{

privateMyCustomObjectListenerlistener;

@Override

publicvoidonAttach(Contextcontext){

super.onAttach(context);

if(contextinstanceofMyCustomObjectListener){

listener=(MyCustomObjectListener)context;

}else{

thrownewClassCastException(context.toString()

+"mustimplementMyListFragment.MyCustomObjectListener");

}

}

}

具体怎么使用生命周期来回调接口,后续小编会制作完整教程供大家使用。

来源网站:太平洋学习网,转载请注明出处:/a/android/1066.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。