我想知道Android OnClik Listener是如何工作的?它是什么模式的?观察?
我无法想象如何在我的应用程序中实现它!它需要是一个自定义实现,因为我想用我的对象而不是视图.
那么如何实现调用obj.setOnClickListener(new Class(){});
在我的代码?
我的意思是,我可以在我的基类中使用一个方法,派生类实现了这个方法,然后只需要一个静态的ArrayList.但是如何在运行时向此List添加新类?
这个类OnClickListener(){}的定义很奇怪.
如何定义现有类并覆盖方法?
我的Java从来没有做过这么好......
编辑:这个问题不是关于如何使用ONCLICKLISTENER.我知道如何使用...
我想要的是:
我想要一个Super Class,它有一个像这样的方法的实现:
public void setMyOnclickListener(MyOnClickListener myListener)
{
//magic code
}
Run Code Online (Sandbox Code Playgroud)
现在我希望有一个这个类的对象让我们调用它
Subclass obj;
Run Code Online (Sandbox Code Playgroud)
现在我想这样做:
obj.setMyOnClickLister(new MyOnClickListener()
{
//defined method at runtime
public void aDefinedMethod()
{
//here goes in some code
}
});
Run Code Online (Sandbox Code Playgroud)
我怎么能有一个类作为参数只有作为匿名类存在的方法?
EDIT2:
好吧我知道它OnClickListener只是一个接口-.-不是一个类定义那是我的困惑!
每个View都包含ListenerInfo静态类,它OnClickListener实际上也包含回调.
系统始终保留屏幕上的所有视图.当用户点击屏幕时,我们有一个递归的foreach循环:
switch(event) {
...
case ON_CLICK:
process(ViewRoot);
}
void process(View view) {
for(View view : view.getChilds()) {
if(view instanceOf ViewGroup && ((ViewGroup)view).getChildCount() > 0) {
process(view);
}
if(view.getListenerInfo().mOnClickListener != null)
view.getListenerInfo().mOnClickListener.onClick(view)
}
}
Run Code Online (Sandbox Code Playgroud)
当你打电话时,setOnClickListener你实际上说"嘿Android!在这里它回调.当用户点击时,请使用它."
View.class还有getListenerInfo返回ListenerInfo对象的方法.
系统使用此方法来调度事件.
所以Observer这里没有模式.它只是简单检查现有的回调.
| 归档时间: |
|
| 查看次数: |
2068 次 |
| 最近记录: |