2011-07-07 2 views
6

Tôi cần tải xuống onClickListener hiện tại - và các loại trình nghe khác-- của đối tượng Chế độ xem để cài đặt proxy-onClickListener mới sẽ thực hiện một số thao tác và sau đó chuyển tiếp cuộc gọi cho người nghe ban đầu.Nhận hiện tại onClickListener của đối tượng Android View

Rất cám ơn!

+1

Tại thời điểm này, tại sao bạn không chỉ bật onClickListener proxy của mình? – Otra

+0

bản sao có thể có của [getOnClickListener() trong chế độ xem Android] (http://stackoverflow.com/questions/11186960/getonclicklistener-in-android-views) –

Trả lời

1

Bạn chỉ cần một chút sáng tạo!

Chỉ cần làm một cái gì đó như thế này:

Subclass các 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.. 

    } 
}); 

Hãy chắc chắn để có một cái nhìn subclassed Giống như YourView đó sẽ ghi đè các setOnClickListener và giữ một tài liệu tham khảo cho người nghe để truy cập với getOnClickListner ..

Tôi chưa thử nghiệm mã này theo bất kỳ cách nào, coi đó là mã giả cho những gì bạn cần làm.

Tôi hy vọng điều này sẽ giúp bạn tìm hiểu một số điều :)