butterknife的使用

来源:互联网 发布:张锦洪画家淘宝网 编辑:程序博客网 时间:2024/05/18 13:31

butterknife

让我们从繁琐的 findViewById 中解救出来。下面直接是使用方法

Activity

class ExampleActivity extends Activity {  @InjectView(R.id.title) TextView title;  @InjectView(R.id.subtitle) TextView subtitle;  @InjectView(R.id.footer) TextView footer;  @Override public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.simple_activity);    ButterKnife.inject(this);    // TODO Use "injected" views...  }}

Fragment  销毁的时候掉用 ButterKnife.reset(this);

public class FancyFragment extends Fragment {  @InjectView(R.id.button1) Button button1;  @InjectView(R.id.button2) Button button2;  @Override View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {    View view = inflater.inflate(R.layout.fancy_fragment, container, false);    ButterKnife.inject(this, view);    // TODO Use "injected" views...    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);      holder = new ViewHolder(view);      view.setTag(holder);    }    holder.name.setText("John Doe");    // etc...    return view;  }  static class ViewHolder {    @InjectView(R.id.title) TextView name;    @InjectView(R.id.job_title) TextView jobTitle;    public ViewHolder(View view) {      ButterKnife.inject(this, view);    }  }}

VIEW LISTS

@InjectViews({ R.id.first_name, R.id.middle_name, R.id.last_name }) List<EditText> nameViews;

CLICK LISTENER INJECTION

@OnClick(R.id.submit) public void submit() {   // TODO submit data to server... }

@OnClick(R.id.submit) public void sayHi(Button button) {   button.setText("Hello!"); }

还可以绑定多控件id

@OnClick({ R.id.door1, R.id.door2, R.id.door3 })  public void pickDoor(DoorView door) {   if (door.hasPrizeBehind()) {        Toast.makeText(this, "You win!", LENGTH_SHORT).show();   } else {       Toast.makeText(this, "Try again", LENGTH_SHORT).show();   }  }


INJECTION RESET 销毁

ButterKnife.reset(this);



默认情况下 @InjectView and @OnClick 找到控件都是不允许为空的,否则会抛异常。

可以添加 @Optional 允许为空

@Optional @InjectView(R.id.might_not_be_there) TextView mightNotBeThere;    @Optional @OnClick(R.id.maybe_missing) void onMaybeMissingClicked() {    // TODO ...    }


<span style="color: rgb(0, 128, 128);">butterknife 在eclipse里面的配置:</span>



ok !


0 0
原创粉丝点击