自己实现简单ButterKnife框架(一)简单介绍

项目中使用到了ButterKnife框架,这是一个通过注解的方式简化程序员代码量,自动映射xml布局文件与对象关系的框架。这里简单介绍一下他的使用方式;
http://www.cnblogs.com/wenjiang/p/4298143.html

(一)使用方式

1)在activity中如何使用

@InjectView(R.id.feedback_content_edit)
    EditText feedContent; // 意见反馈功能

    @InjectView(R.id.feedback_contact_edit)
    EditText feedContact; // 联系方式

    @InjectView(R.id.b3_button)
    Button feedOk; // 提交按钮

    @OnClick(R.id.open_car_door)
    public void openCarDorClick() {
        dosomething;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_feedback);
        ButterKnife.inject(this);

        initView();
    }

是不是很简单?其实这就是butterKnife的基本用法了

  • 通过注解(@InjectView)的方式将xml布局文件中定义的组件与Activity中定义的组件对象对应起来
  • 通过注解(@OnClick)实现对布局文件的点击事件

  • 在onCreate方法中通过静态方法:ButterKnife.inject(this);真正的将xml布局组件与activity中的组件对象映射起来;

2)在Fragment中如何使用

public class SimpleFragment extends Fragment {

    @InjectView(R.id.fragment_text_view)
    TextView mTextView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_simple, container, false);
        ButterKnife.inject(this, view);
        mTextView.setText("TextView in Fragment are found!");
        return view;
    }
}

注意这里需要调用ButterKnife的重载方法:

public static void inject(Object target, View source) {
        inject(target, source, ButterKnife.Finder.VIEW);
    }

3)在Adapter的ViewHolder是如何使用的

static class ViewHolder {
        @InjectView(R.id.person_name)  TextView name;
        @InjectView(R.id.person_age)  TextView age;
        @InjectView(R.id.person_location)  TextView location;
        @InjectView(R.id.person_work)  TextView work;

        public ViewHolder(View view) {
            ButterKnife.inject(this, view);
        }
    }

你可能感兴趣的:(自己实现简单ButterKnife框架(一)简单介绍)