首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在android中创建我们自己的Listener界面?

如何在android中创建我们自己的Listener界面?
EN

Stack Overflow用户
提问于 2009-06-15 07:20:21
回答 5查看 227.3K关注 0票数 144

有没有人可以帮我用一些代码片段创建用户定义的监听器接口?

EN

回答 5

Stack Overflow用户

发布于 2013-09-03 13:57:07

请务必阅读observer pattern

监听器接口

代码语言:javascript
复制
public interface OnEventListener {
    void onEvent(EventResult er);
    // or void onEvent(); as per your need
}

然后在你的类中说Event

代码语言:javascript
复制
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

代码语言:javascript
复制
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();
    }
}
票数 113
EN

Stack Overflow用户

发布于 2013-09-03 13:29:12

创建监听器接口。

代码语言:javascript
复制
public interface YourCustomListener
{
    public void onCustomClick(View view);
            // pass view as argument or whatever you want.
}

并在另一个活动(或片段)中创建方法setOnCustomClick,您想要在其中应用您的自定义侦听器......

代码语言:javascript
复制
  public void setCustomClickListener(YourCustomListener yourCustomListener)
{
    this.yourCustomListener= yourCustomListener;
}

在您的第一个活动中调用此方法,并传递侦听器接口...

票数 7
EN

Stack Overflow用户

发布于 2018-05-01 03:47:32

在2018年,不再需要监听器接口。您已经让Android LiveData负责将所需的结果传递回UI组件。

如果我采用Rupesh的答案并将其调整为使用LiveData,它将如下所示:

代码语言:javascript
复制
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中:

代码语言:javascript
复制
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.
            }
        });
    }
}

有关代码示例的更多信息,您可以阅读我关于它的帖子以及官方文档:

When and why to use LiveData

Official docs

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/994840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档