有没有人可以帮我用一些代码片段创建用户定义的监听器接口?
发布于 2013-09-03 13:57:07
请务必阅读observer pattern
监听器接口
public interface OnEventListener {
void onEvent(EventResult er);
// or void onEvent(); as per your need
}
然后在你的类中说Event
类
public class Event {
private OnEventListener mOnEventListener;
public void setOnEventListener(OnEventListener listener) {
mOnEventListener = listener;
}
public void doEvent() {
/*
* code code code
*/
// and in the end
if (mOnEventListener != null)
mOnEventListener.onEvent(eventResult); // event result object :)
}
}
在您的驱动程序类MyTestDriver
中
public class MyTestDriver {
public static void main(String[] args) {
Event e = new Event();
e.setOnEventListener(new OnEventListener() {
public void onEvent(EventResult er) {
// do your work.
}
});
e.doEvent();
}
}
发布于 2013-09-03 13:29:12
创建监听器接口。
public interface YourCustomListener
{
public void onCustomClick(View view);
// pass view as argument or whatever you want.
}
并在另一个活动(或片段)中创建方法setOnCustomClick,您想要在其中应用您的自定义侦听器......
public void setCustomClickListener(YourCustomListener yourCustomListener)
{
this.yourCustomListener= yourCustomListener;
}
在您的第一个活动中调用此方法,并传递侦听器接口...
发布于 2018-05-01 03:47:32
在2018年,不再需要监听器接口。您已经让Android LiveData负责将所需的结果传递回UI组件。
如果我采用Rupesh的答案并将其调整为使用LiveData,它将如下所示:
public class Event {
public LiveData<EventResult> doEvent() {
/*
* code code code
*/
// and in the end
LiveData<EventResult> result = new MutableLiveData<>();
result.setValue(eventResult);
return result;
}
}
现在在您的驱动程序类MyTestDriver中:
public class MyTestDriver {
public static void main(String[] args) {
Event e = new Event();
e.doEvent().observe(this, new Observer<EventResult>() {
@Override
public void onChanged(final EventResult er) {
// do your work.
}
});
}
}
有关代码示例的更多信息,您可以阅读我关于它的帖子以及官方文档:
https://stackoverflow.com/questions/994840
复制相似问题