How to create our own Listener interface in android?

前端 未结 9 1904
不知归路
不知归路 2020-11-22 04:55

Could someone help me to create user defined listener interface with some code snippets?

相关标签:
9条回答
  • 2020-11-22 05:41

    In the year of 2018, there's no need for listeners interfaces. You've got Android LiveData to take care of passing the desired result back to the UI components.

    If I'll take Rupesh's answer and adjust it to use LiveData, it will like so:

    public class Event {
    
        public LiveData<EventResult> doEvent() {
             /*
              * code code code
              */
    
             // and in the end
    
             LiveData<EventResult> result = new MutableLiveData<>();
             result.setValue(eventResult);
             return result;
        }
    }
    

    and now in your driver class 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.
                }
            });
        }
    }
    

    For more information along with code samples you can read my post about it, as well as the offical docs:

    When and why to use LiveData

    Official docs

    0 讨论(0)
  • 2020-11-22 05:48

    Create a new file:

    MyListener.java:

    public interface MyListener {
        // you can define any parameter as per your requirement
        public void callback(View view, String result);
    }
    

    In your activity, implement the interface:

    MyActivity.java:

    public class MyActivity extends Activity implements MyListener {
       @override        
       public void onCreate(){
            MyButton m = new MyButton(this);
       }
    
        // method is invoked when MyButton is clicked
        @override
        public void callback(View view, String result) {   
            // do your stuff here
        }
    }
    

    In your custom class, invoke the interface when needed:

    MyButton.java:

    public class MyButton {
        MyListener ml;
    
        // constructor
        MyButton(MyListener ml) {
            //Setting the listener
            this.ml = ml;
        }
    
        public void MyLogicToIntimateOthers() {
            //Invoke the interface
            ml.callback(this, "success");
        }
    }
    
    0 讨论(0)
  • 2020-11-22 05:48

    Create listener interface.

    public interface YourCustomListener
    {
        public void onCustomClick(View view);
                // pass view as argument or whatever you want.
    }
    

    And create method setOnCustomClick in another activity(or fragment) , where you want to apply your custom listener......

      public void setCustomClickListener(YourCustomListener yourCustomListener)
    {
        this.yourCustomListener= yourCustomListener;
    }
    

    Call this method from your First activity, and pass the listener interface...

    0 讨论(0)
提交回复
热议问题