博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android系列之butterknife基本用法
阅读量:2041 次
发布时间:2019-04-28

本文共 2076 字,大约阅读时间需要 6 分钟。

现在安卓项目开发中,butterknife是比较常用的注解框架,从而简化了findViewById的重复使用,提高了编程的效率

然而为什么要使用butterknife?一方面是为了提高编程效率,一方面butterknife对系统性能是没有影响的,因为butterknife是在编译的时候生成新的class,不是运行时进行反射,所以对性能不会有影响

butterknife现在最新版本是butterknife8,不过开发中还是主要使用butterknife6和butterknife7

butterknife6和butterknife7用法还是稍稍有点不同的

 

(a)引入butterknife注解框架

在Android Studio中可以,很快直接引入,我们可以,选择项目->右键->open modules setting,然后选择Dependencies,选择绿色的Add按钮,输入com.jakewharton:butterknife:7.0.1或者com.jakewharton:butterknife:6.1.0等等,引入框架,也可以网上下载jar,然后选择add as library,添加到项目

 

(b)butterknife的主要用处

(i)Activity类里使用:

Demo:只要使用InjectView就可以,然后在onCreate方法里初始化

ButterKnife.inject(类名.this);

 

 

@InjectView(R.id.listview)    ListView listview;    @InjectView(R.id.tv_black)    TextView mBlack;    @InjectView(R.id.message_title)    TextView mTitle;    private HashMap
map; private Context mContext; @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.activity_group_post); ButterKnife.inject(GroupPostActivity.this); initView(); }

butterknife7就换成@Bind就可以,初始化换成ButterKnife.bind(this);

 

 

 

(ii)在Fragment类使用

 

public class SimpleFragment extends Fragment {     @InjectView(R.id.fragment_text_view)    TextView mTextView;     public SimpleFragment() {    }     @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;    }}

 

 

 

 

 

(iii)在事件处理里使用

onClickListener可以这样写了

 

@OnClick(R.id.basic_finish_a_button)    void finishA(View view) {        finish();    }

 

 

 

 

 

 

(iiii)在ListView和GridView里使用

 

@InjectViews({R.id.label_first_name, R.id.label_middle_name, R.id.label_last_name})List
labelViews;

也可以在适配器里使用等等

 

下面提供参考文档

参考博客:http://blog.csdn.net/u012468376/article/details/50594531(Butterknife7)

http://www.cnblogs.com/mengdd/archive/2015/06/23/4595973.html(Butterknife6)

 

例子:

官网: 

Java Doc: 

github上开源项目: 

 

 

 

 

 

 

 

 

你可能感兴趣的文章
source insight使用方法简介
查看>>
<stdarg.h>头文件的使用
查看>>
C++/C 宏定义(define)中# ## 的含义 宏拼接
查看>>
Git安装配置
查看>>
linux中fork()函数详解
查看>>
C语言字符、字符串操作偏僻函数总结
查看>>
Git的Patch功能
查看>>
分析C语言的声明
查看>>
TCP为什么是三次握手,为什么不是两次或者四次 && TCP四次挥手
查看>>
C结构体、C++结构体、C++类的区别
查看>>
进程和线程的概念、区别和联系
查看>>
CMake 入门实战
查看>>
绑定CPU逻辑核心的利器——taskset
查看>>
Linux下perf性能测试火焰图只显示函数地址不显示函数名的问题
查看>>
c结构体、c++结构体和c++类的区别以及错误纠正
查看>>
Linux下查看根目录各文件内存占用情况
查看>>
A星算法详解(个人认为最详细,最通俗易懂的一个版本)
查看>>
利用栈实现DFS
查看>>
逆序对的数量(递归+归并思想)
查看>>
数的范围(二分查找上下界)
查看>>