如何在运行时将监听器与Butter Knife绑定?

时间:2016-10-13 23:24:55

标签: android butterknife

是否可以在运行时使用Butter Knife绑定侦听器(如onclick)?我想将在运行时确定的视图传递给方法,并在该方法中将侦听器绑定到它们。我知道如何以正常方式完成我想做的事情,所以我严格询问黄油刀。

1 个答案:

答案 0 :(得分:3)

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)

不是很优雅的解决方案。