注解
Posted xiong_hui_hui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了注解相关的知识,希望对你有一定的参考价值。
定义注解
//定义注解类型:类,属性,方法
@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.功能:
- 不用写findViewById
id找不到时会在编译时报错,view变量声明不能为private,static
@InjectView(R.id.butter_text_view_2)
TextView mTextView2;
- 不用写setOnClickListener
还有ListView的@OnItemClick, CheckBox的@OnCheckedChanged等;
方法不能为private,static;
可绑定多个id;所以Listener参数都是optional,可写可不写;
@OnClick(R.id.button,R.id.button2)
void finishA(View view)
finish();
- 组建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三种
以上是关于注解的主要内容,如果未能解决你的问题,请参考以下文章
与匿名管道一起使用的Diff在放入Makefile时会出现奇怪的错误
使用IDEA工具整合mybatis时使用@Resource和@Autowired自动注解bean时会显示红色问题的解决办法