有没有可能在运行时用黄油刀绑定一个听众,比如onclick?我想将在运行时确定的视图传递给一个方法,并在该方法中绑定一个侦听器。我知道如何用正常的方法完成我想做的事,所以我严格要求黄油刀。
最佳答案
butterknife注释的保留策略是CLASS
,这意味着被注释的字段由编译器标识(作为注释),而不是由虚拟机标识。值的绑定在运行时发生。这意味着所有的字段和方法都是预先注释的,稍后butterknife会有一个所有字段和方法的映射,其中包含需要绑定的生成类。巴特利夫
调用ButterKnife.bind(mRequiredView)
将尝试绑定该视图中的方法/字段。请注意,如果视图ID不存在,最明显的是,But刀将抱怨。
另一种方法是将方法包装到另一个(内部)类中,该类将用作目标对象。
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)
不是很好的解决方案。