I have a design issue. I need to implement a listener. I saw the following SO question: How to create our own Listener interface in android?
But in the link it provides in the answer, author creates a listener which just extends the system-defined listener. E.g onClick, you would do some validation & then call another method called "whenValidatedListener"
I need to define listeners which are not linked to existing event listeners. Basically there would be some processing going on in native(C/C++) code & in the Android code I need a listener to respond to certain messages from it.
I think I could do this using handlers. But AsyncTask is the recommended approach for multithreading.
Is there a way to implement a user-defined-listener using AsyncTask?
Implementing Action ListenersAn ActionListener implementation must include a processAction(ActionEvent) method. The processAction(ActionEvent) method processes the specified action event. The JavaServer Faces implementation invokes the processAction(ActionEvent) method when the ActionEvent occurs.
An event listener in Java is designed to process some kind of event — it "listens" for an event, such as a user's mouse click or a key press, and then it responds accordingly. An event listener must be connected to an event object that defines the event.
AsyncTask has nothing to do with implementing a listener.
Here's a listener:
public interface TheListener {
public void somethingHappened();
}
Call it however you want. For example, here's a class doing something like View:
public class Something {
private TheListener mTheListener;
public void setTheListener(TheListener listen) {
mTheListener = listen;
}
private void reportSomethingChanged() {
if (mTheListener != null) {
mTheListener.somethingHappened();
}
}
}
You can make this as complicated as you want. For example, instead of a single listener pointer you could have an ArrayList to allow multiple listeners to be registered.
Calling this from native code also has nothing to do with implementing a listener interface. You just need to learn about JNI to learn how native code can interact with Java language code.
Just to clear things up;
you do exactly what @hackbod said and add this :
the activity
which encloses the class (with the method setListener(Listener listen)
), implements Listener
and in it's oncreate
or onResume
or where-ever you call yourClass.setListener(this)
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With