註解

定義註解

//定義註解類型:類,屬性,方法
@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:

@Override
protected 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三種

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章