¿Podría alguien ayudarme a crear una interfaz de escucha definida por el usuario con algunos fragmentos de código?
134
Crea un nuevo archivo:
MyListener.java
:
public interface MyListener {
// you can define any parameter as per your requirement
public void callback(View view, String result);
}
En su actividad, implemente la interfaz:
MyActivity.java
:
public class MyActivity extends Activity implements MyListener {
@override
public void onCreate(){
MyButton m = new MyButton(this);
}
// method is invoked when MyButton is clicked
@override
public void callback(View view, String result) {
// do your stuff here
}
}
En su clase personalizada, invoque la interfaz cuando sea necesario:
MyButton.java
:
public class MyButton {
MyListener ml;
// constructor
MyButton(MyListener ml) {
//Setting the listener
this.ml = ml;
}
public void MyLogicToIntimateOthers() {
//Invoke the interface
ml.callback(this, "success");
}
}
WeakReference<>
en este caso, pero luego no puede convertir al oyente en una clase anónima o cualquier cosa donde el oyente no tenga otras referencias ... por lo que sería preferible no usarlopor favor lea el patrón de observador
interfaz de oyente
entonces en tu clase di
Event
claseen tu clase de conductor
MyTestDriver
fuente
Interfaz
GenericAsyncTask
Echa un vistazo a esto , esta pregunta para más detalles.
fuente
Hay 4 pasos:
1.crear clase de interfaz (oyente)
2.utilice la interfaz en la vista 1 (defina la variable)
3.implementa la interfaz para ver 2 (vista 1 usada en la vista 2)
Interfaz 4.pass en la vista 1 para ver 2
Ejemplo:
Paso 1: necesita crear una interfaz y definir la función
Paso 2: use esta interfaz a la vista
Paso 3,4: implementos a la actividad
fuente
Crear interfaz de oyente.
Y cree el método setOnCustomClick en otra actividad (o fragmento), donde desee aplicar su escucha personalizada ......
Llame a este método desde su primera actividad y pase la interfaz de escucha ...
fuente
En el año de 2018, no hay necesidad de interfaces de oyentes. Tienes Android LiveData para encargarse de devolver el resultado deseado a los componentes de la interfaz de usuario.
Si tomo la respuesta de Rupesh y la ajusto para usar LiveData, me gustaría:
y ahora en su clase de controlador MyTestDriver:
Para obtener más información junto con ejemplos de código, puede leer mi publicación al respecto, así como los documentos oficiales:
Cuándo y por qué usar LiveData
Documentos oficiales
fuente
En Android, puede crear una interfaz como Listener, y su Actividad la implementa, pero no creo que sea una buena idea. Si tenemos muchos componentes para escuchar los cambios de su estado, podemos crear una BaseListener implementa la interfaz de escucha, y usar código de tipo para manejarlos. Podemos vincular el método cuando creamos un archivo XML, por ejemplo:
y el código fuente:
pero no creo que sea una buena idea ...
fuente
Lo hice de la siguiente manera para enviar mi clase de modelo de la Segunda Actividad a la Primera Actividad. Utilicé LiveData para lograr esto, con la ayuda de las respuestas de Rupesh y TheCodeFather.
Segunda actividad
"liveSong" es AudioListModel declarado globalmente
Llame a este método en la primera actividad
Que esto ayude a nuevos exploradores como yo.
fuente
Método simple para hacer este enfoque. Primero implementa el
OnClickListeners
en su clase de actividad.Código:
fuente