Android Button setOnClickListener Design
If you're targeting 1.6 or later, you can use the android:onClick xml attribute to remove some of the repetitive code. See this blog post by Romain Guy.
<Button android:height="wrap_content" android:width="wrap_content" android:onClick="myClickHandler" />
And in the Java class, use these below lines of code:
class MyActivity extends Activity { public void myClickHandler(View target) { // Do stuff }}
Implement OnClickListener() on your Activity...
public class MyActivity extends Activity implements View.OnClickListener {}
For each button use...
buttonX.setOnClickListener(this);
In your Activity onClick() method test for which button it is...
@Overridepublic void onClick(View view) { if (View.equals(buttonX)) // Do something}
Also in onClick you could use view.getId() to get the resource ID and then use that in a switch/case block to identify each button and perform the relevant action.
Android lambada solution
public void registerButtons(){ register(R.id.buttonName1, ()-> {/*Your code goes here*/}); register(R.id.buttonName2, ()-> {/*Your code goes here*/}); register(R.id.buttonName3, ()-> {/*Your code goes here*/});}private void register(int buttonResourceId, Runnable r){ findViewById(buttonResourceId).setOnClickListener(v -> r.run());}
Switch case solution solution
public void registerButtons(){ register(R.id.buttonName1); register(R.id.buttonName2); register(R.id.buttonName3);}private void register(int buttonResourceId){ findViewById(buttonResourceId).setOnClickListener(buttonClickListener);}private OnClickListener buttonClickListener = new OnClickListener() { @Override public void onClick(View v){ switch (v.getId()) { case R.id.buttonName1: // TODO Auto-generated method stub break; case R.id.buttonName2: // TODO Auto-generated method stub break; case View.NO_ID: default: // TODO Auto-generated method stub break; } }};