单个控件绑定
class ExampleActivity extends Activity {
@BindView(R.id.title) TextView title;//@BindView注解加控件id标注要查找的控件
@BindView(R.id.subtitle) TextView subtitle;
@BindView(R.id.footer) TextView footer;
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_activity); ButterKnife.bind(this);//在当前activity自动绑定 // TODO Use fields... } }
资源绑定
class ExampleActivity extends Activity {
@BindString(R.string.title) String title;//@BindString注解加资源id标注要查找的资源
@BindDrawable(R.drawable.graphic) Drawable graphic;
@BindColor(R.color.red) int red; // int or ColorStateList field
@BindDimen(R.dimen.spacer) Float spacer; // int (for pixel size) or float (for exact value) field
// ...
}
根据自定义的根布局来自动绑定布局里的控件
public class FancyFragment extends Fragment {
@BindView(R.id.button1) Button button1;
@BindView(R.id.button2) Button button2;
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fancy_fragment, container, false); ButterKnife.bind(this, view);//自动绑定Activity根部局控件的时候直接传this即可 // TODO Use fields... return view; } }
在adapter里绑定控件
public class MyAdapter extends BaseAdapter {
@Override public View getView(int position, View view, ViewGroup parent) {
ViewHolder holder;
if (view != null) {
holder = (ViewHolder) view.getTag();
} else {
view = inflater.inflate(R.layout.whatever, parent, false);//item布局
holder = new ViewHolder(view);//传给ViewHolder
view.setTag(holder);
}
holder.name.setText("John Doe"); // etc... return view; } static class ViewHolder { @BindView(R.id.title) TextView name; @BindView(R.id.job_title) TextView jobTitle; public ViewHolder(View view) { ButterKnife.bind(this, view);//其实就是根据我们自己提供的根布局来绑定控件 } } }