2011-07-07 39 views
6

Necesito obtener el OnClickListener actual --y otro tipo de oyentes-- de un objeto View para instalar un nuevo proxy-onClickListener que hará algo de trabajo y luego reenviar la llamada para el oyente original.Obtenga el OnClickListener actual de un objeto Android View

Muchas gracias!

+1

En este punto, ¿por qué no hacer que su proxy-OnClickListener su OnClickListener? – Otra

+0

posible duplicado de [getOnClickListener() en vistas de Android] (http://stackoverflow.com/questions/11186960/getonclicklistener-in-android-views) –

Respuesta

1

¡Solo necesitas ser un poco creativo!

Sólo hacer algo como esto:

Subclase el View.OnClickListener

abstract class ProxyAbleClickListener implements OnClickListener { 

    Runnable ProxyAction; 

    @Override 
    public void onClick(View arg0) { 
     if (ProxyAction != null) { 
      ProxyAction.run(); 
     } 
    } 

    public void setProxyAction(Runnable proxyAction) { 
     ProxyAction = proxyAction; 
    } 
} 

/* Somwhere in your code ! */ 

YourView view = new Button(context); 

view.setOnClickListener(new ProxyAbleClickListener() { 
    public void onClick(View arg0) { 
     // Insert onClick Code here 

     super.onClick(arg0); 
    } 

}); 

ProxyAbleClickListener listener = (ProxyAbleClickListener) view.getOnClickListener(); 
listener.setProxyAction(new Runnable() { 

    @Override 
    public void run() { 
     // Insert your proxy code here.. 

    } 
}); 

Asegúrese de tener una subclase vista Como YourView que anula la setOnClickListener y mantiene una referencia al oyente a acceder con getOnClickListner ..

No he probado este código de ninguna manera, trátelo como un pseudocódigo para lo que debe hacer.

espero que esto aprenderá que algunas cosas :)

Cuestiones relacionadas