注解

定义注解

//定义注解类型:类,属性,方法
@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三种

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值