我需要获取View对象的当前onClickListener和其他类型的侦听器,以便安装新的proxy-onClickListener,它将执行一些工作,然后将调用转发给原始侦听器。
非常感谢!!!
答案 0 :(得分:1)
你只需要有点创意!
做这样的事情:
对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..
}
});
确保有一个子类视图Like YourView,它会覆盖setOnClickListener并保持对使用getOnClickListner访问的侦听器的引用..
我没有以任何方式测试此代码,将其视为您需要执行的伪代码。
我希望这会让你学到一些东西:)