【发布时间】:2011-07-07 11:52:07
【问题描述】:
我需要获取 View 对象的当前 onClickListener 和其他类型的侦听器,以便安装一个新的代理 onClickListener,它会做一些工作,然后将调用转发给原始侦听器。
非常感谢!!!
【问题讨论】:
-
此时,为什么不将您的代理-onClickListener 设置为您的 onClickListener?
标签: java android android-widget
我需要获取 View 对象的当前 onClickListener 和其他类型的侦听器,以便安装一个新的代理 onClickListener,它会做一些工作,然后将调用转发给原始侦听器。
非常感谢!!!
【问题讨论】:
标签: java android android-widget
您只需要有一点创意!
只需这样做:
子类化 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..
}
});
确保有一个类似于 YourView 的子类视图,它覆盖 setOnClickListener 并保留对侦听器的引用以使用 getOnClickListner 访问。
我没有以任何方式测试过这段代码,把它当作你需要做的伪代码。
我希望这能让你学到一些东西:)
【讨论】: