2016-10-13 39 views
1

是否有可能在运行时与Butter Knife绑定一个监听器,如onclick?我想将在运行时确定的视图传递给方法,并在该方法内将监听器绑定到它们。我知道如何通过常规手段完成我想要做的事情,所以我严格询问黄油刀。如何在运行时用Butter Knife绑定侦听器?

回答

2

Butterknife注释的保留策略是CLASS,这意味着注释的字段被编译器识别(注释),但不被虚拟机识别。值的绑定发生在运行时。这意味着所有的字段和方法都被预先注释了,后来Butterknife拥有一个所有字段和方法的映射,并且生成的类需要被绑定。 Butterknife TL; DR

调用ButterKnife.bind(mRequiredView)将尝试绑定该视图中的方法/字段。请注意,如果视图ID最不明显,Butterknife会投诉。

这样做的另一种方法是将您的方法封装在另一个(内部)类中,该类将用作目标对象。该助手类的

private static class BindWrapper{ 

    @OnClick(R.id.view_later_to_be_bind) 
    public void onClickedView(View v){ 


    } 

} 

实例将用于绑定的观点,如:

//somewhere in the code where we need to bind the listener 
BindWrapper target = new BindWrapper(); 
ButterKnife.bind(target, mRequiredView) 

没有真正优雅的解决方案。

相关问题