Si todos los botones tienen una funcionalidad similar que solo difiere en un parámetro que es identificable, es mejor crear un oyente y asignarlo a todos los botones.
La ubicación del oyente depende del alcance de las variables que necesita utilizar. Si necesita usar algunas variables de método, debe crearse dentro del método, si utiliza miembros de una clase, debe crearse dentro de la clase.
Por ejemplo, si tiene diez botones que cada uno debe iniciar una actividad diferente, puede crear un mapa de puntos de vista y actividades, y en el oyente financiar la actividad apropiada para empezar:
Map<View, Class<?>> viewActivityMap = new HashMap<View, Class<?>>();
// fill it somewhere
// in onCreate
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Class<?> classToStart = viewActivityMap.get(v);
Intent intent = new Intent(YourActivity.this, classToStart);
startActivity(intent);
}
}
button1.setOnClickListener(listener);
button2.setOnClickListener(listener);
button3.setOnClickListener(listener);
En caso de oyentes, la única razón real que veo para crear una clase interna, es si desea crear un constructor que reciba parámetros que sean diferentes de los constructores de clase/interfaz implementados.
¡Lo que más le convenga! ... Yo sugeriría ir a una clase interna con nombre, si quiere un código bien estructurado ... –