Android – Event Listener

MIKE a

Complementando el artículo de la semana pasada (ANDROID – ASYNCTASK), hay ocasiones que es necesario regresar o informar a la clase que “llama” al proceso asíncrono para continuar con la rutina.

En Android existen varias formas, una puede ser creando los “Event Listener”. Un “Event Listener” es algo parecido a “Delegates” en C#.

Bueno, para comenzar creamos una “Interfaz”

public interface OnMyDbHelperEventListener {
    public void onDatabaseOpened();
}

En la clase donde ejecutamos el proceso asíncrono, creamos una variable privada de tipo “OnMyDbHelperEventListener” e implementamos su respectivo “setter”.

public class MyHelper extends SQLiteOpenHelper {
  private MyDatabaseTask myDatabaseTask;
  private OnMyDbHelperEventListener onMyDbHelperEventListener;
  //TODO all your own variables
 
  public void setOnMyDbHelperEventListener(OnMyDbHelperEventListener onMyDbHelperEventListener){
	this.onMyDbHelperEventListener = onMyDbHelperEventListener;
  }
 
  //TODO all your own methods
}

Agredamos en el método “onPostExecute” de la clase asíncrona, la siguiente sentencia:

    @Override
    protected void onPostExecute(SQLiteDatabase sqliteDatabase) {
      myDatabaseTask = null;
 
      // This fragment of code we have to add 
      if(onMyDbHelperEventListener != null){
         onMyDbHelperEventListener.onDatabaseOpened(); 
      }
    }

Por último, en la clase que crea “MyHelper” y manda a llamar el método “open()” tendría que implementar o crear los métodos de la interfaz “OnMyDbHelperEventListener”

public class MainActivity extends FragmentActivity implements OnMyDbHelperEventListener {
  //My own properties
 
  protected void onCreate(Bundle savedInstanceState) {
    //My own code
 
    MyHelper myHelper = new MyHelper();
    myHelper.setOnMyDbHelperEventListener(this);
  }  
 
  @Override
  public void onDatabaseOpened(){
    //Read the tables or your own stuff
  }
}

Bueno, esperando sea de ayuda este código.

Analista/Desarrollador y cofundador de QBit Mexhico. Tecnologías utilizadas Android, Java (EJB, Servlets, Faces, Groovy & Grails, Maven, Swing), .Net (C#, VB, ASP, MVC), Delphi, Spring, Hibernate, DTSx, Oracle, T-SQL, Firebird, MySQL, MongoDB, NodeJs, ReactJs (Flux). Sistemas Operativos Mac, Ubuntu y Windows.

Twitter LinkedIn 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *