View.OnClickListener, el método o la clase?

Lo siento si esta pregunta es estúpida, pero no puedo envolver mi cabeza alrededor de la sintaxis de Java .. He aprendido C / C ++
Sé que View es una clase que es buena .. pero no entiendo si View.OnClickListener () es un método.
Lo dudo a menos que devuelva un objeto?
Creo que View es una clase que tiene un objeto miembro de OnClickListener estático .. de nuevo que no tiene sentido para mí ..
¿Puede alguien explicar lo que está sucediendo con esta línea de código?

button1 = (Button) findByView(R.id.button1) ; button1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { } } 

Entonces, ¿qué está pasando con este código?

Button1 es una referencia al objeto button1 en el archivo xml.

button1 objeto button1 tiene un objeto miembro setOnClickListener que yo, desde su nombre, supongo que inicializa un evento al botón o algo. Pero recibe el objeto View.OnClicListener() .

Estoy confundido por que .. onClick recibe un objeto View para onClickListener no es un objeto devuelve un objeto View? No lo entiendo en absoluto.

¿Puede alguien explicar lo que sucede en esa línea View.onClickListener() es otra forma de decir new this ?

View.OnClickListener es una interfaz , no la llamas, pero crea una nueva instancia de ella ( new View.OnClickListener() es una llamada al constructor)

La instancia que se crea es de clase anónima que implements View.OnClickListener , en los corchetes justo debajo de new View.OnClickListener()

Cualquier clase que implemente View.OnClickListener debe implementar los métodos declarados en él (por ejemplo, onClick )

setOnClickListener sólo guarda la referencia a la instancia de View.OnClickListener suministrada, y cuando alguien hace clic en el botón, se onClick método onClick del oyente que estableció.

OnClickListener es una interfaz. Una interfaz proporciona un conjunto de métodos que otras clases pueden implementar. http://download.oracle.com/javase/tutorial/java/concepts/interface.html

Usted podría tener otra clase (como y adaptador), que extiende OnClickListener, entonces su clase de adaptador podría agregar el método "OnClick (View v)", y también sería capaz de manejar eventos Click. O puede usar el código que publicó, donde acaba de crear una clase anónima, que implementa OnClickListener.

-Leñoso

El código de Android está orientado a respuestas basadas en eventos. El bloque de código es el siguiente:

Busca un botón que hayas añadido al diseño activo y asignalo a una variable local:

 button1 = (Button) findByView(R.id.button1); 

Establezca el oyente de clic en el botón. Esta es una clase que se invocará cuando el botón registre un evento. La clase se construye aquí, es anónimo, ya que no se asigna a una variable, pero Android se mantendrá al tanto de la referencia.

Los eventos de botón siempre se deben a que se presiona, por lo que cuando el botón registra que se ha presionado, informará a la clase onClickListener que incluso se produjo, y pasar a sí mismo como la vista. El onClickListener se construye como:

 new View.OnClickListener() { public void onClick(View v) { } } 

Ese método onClick es utilizado por el oyente para manejar el evento (en este caso, presionar un botón). Por lo tanto, usted pondría el código que le gustaría ejecutar en ese método.

Para responder a su pregunta directamente, onClickListere es una clase anónima que define el método onClick, que manejará eventos de botón.

  • ¿Reacciona la compilación nativa de JavaScript en Java para Android?
  • Cómo obtener el modo de permiso de archivo mediante programación en Java
  • Android Studio 2.1 No se puede resolver el símbolo 'R'
  • Android ListView Swipe para la acción como la lista de Twitter
  • Excluyendo archivos .class de Gradle dependecy
  • Android: ¿Cómo generar automáticamente código Java desde el archivo de diseño?
  • Desde la API de archivos Blobstore obsoleta hasta blobs de servicio
  • Precargar algunas imágenes para listview con UniversalImageLoader
  • Utilizar Bouncy Castle para extraer información de certificados de android
  • Varios archivos dex definen landroid / support / annotation / AnimRes
  • ¿Qué hace gl.glClearColor?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.