Android Button Defining external Listener


When should I use it

  • When the code inside an inline listener is too big and your method / class becomes ugly and hard to read
  • You want to perform same action in various elements (view) of your app

To achieve this you need to create a class implementing one of the listeners in the View API.

For example, give help when long click on any element:

public class HelpLongClickListener implements View.OnLongClickListener 
    public HelpLongClickListener() {

    public void onLongClick(View v) {
        // show help toast or popup

Then you just need to have an attribute or variable in your Activity to use it:

HelpLongClickListener helpListener = new HelpLongClickListener(...);


NOTE: defining listeners in separated class has one disadvantage, it cannot access class fields directly, so you need to pass data (context, view) through constructor unless you make attributes public or define geters.