注解

来源:互联网 发布:java判断字符等于空格 编辑:程序博客网 时间:2024/06/13 11:17

定义注解

//定义注解类型:类,属性,方法@Target(ElementType.FIELD)//注解可见时候,一般运行时可见@Retention(RetentionPolicy.RUNTIME)public @interface Id {}

使用注解

public class Bean {    @Id    private int id;    public int getId() {       return id;   }    public void setId(int id) {   this.id = id;  }   }

注解定位和反射取值

public class Use{  public int a;  public void setA(Bean bean){  Class clazz = bean.getClass();  Field[] fields = clazz.getDeclaredFields();            for (Field field:fields){                if (field.getAnnotation(Id.class) != null){                    field.setAccessible(true);                    a = field.getInt(bean);                }            }}}

ButterKnife

1.配置:

compile ‘com.jakewharton:butterknife:6.1.0’

2.绑定事件:

activity:

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.demo_butter_knife);    ButterKnife.inject(this);}

fragment:

@Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,                             Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment_simple, container, false);        ButterKnife.inject(this, view);        return view;    }

这个必须记得在onDestroyView中重置一下ButterKnife.reset(this);

viewHolder:

 public static class ViewHolder { public ViewHolder(View view) {            ButterKnife.inject(this, view);        }@InjectView(R.id.person_name) TextView name; @InjectView(R.id.person_age) TextView age; }

3.功能:

  1. 不用写findViewById
    id找不到时会在编译时报错,view变量声明不能为private,static
  @InjectView(R.id.butter_text_view_2)   TextView mTextView2;
  1. 不用写setOnClickListener
    还有ListView的@OnItemClick, CheckBox的@OnCheckedChanged等;
    方法不能为private,static;
    可绑定多个id;所以Listener参数都是optional,可写可不写;
@OnClick({R.id.button,R.id.button2})    void finishA(View view) {        finish();    }
  1. 组建View List
    可同时获取多个view放入list
@InjectViews({R.id.first_name, R.id.middle_name, R.id.last_name})List nameViews; 

4.apply()方法(要用再说)

共有3种形式:即Action, Setter和Property三种

0 0
原创粉丝点击