厌烦了写findViewById 试试ButterKnife吧

先上官网

http://jakewharton.github.io/butterknife/  和 https://github.com/JakeWharton/butterknife

配置开发环境

在代码开始之前 先要将库加入依赖

Eclipse

去官网手工下载 jar 包, 放到 libs目录 或者其他方式加入到 Build Path当中

Android Studio

GUI 操作的方式

菜单上 File -> Project Structure (或者直接点工具栏上的Project Structure) -> 左侧 Modules下的 app  -> 右侧  Dependencies 标签页 -> +号 -> Library dependency  搜索 butterknife  选择 com.jakewharton:butterknife:8.4.0 然后 OK, 版本号会变 , 反正选择没有 -compiler 这种带尾巴的。

新的butterknife 增加了 annotationProcessor 这种方式无法添加, 所以最终还是要编辑 Gradle Script

编辑 Gradle Script的方式

打开 Module app的 build.gradle , 在dependencies 添加两行

dependencies {
    ...
    compile ‘com.jakewharton:butterknife:8.4.0‘
    annotationProcessor ‘com.jakewharton:butterknife-compiler:8.4.0‘
   ...
}

省略号代表其他已有的 dependencies 。 添加之后 sync

启动ButterKnife

开发环境配好后, 编码开始

在 Activity中使用, 首先要启动butterknife , 在 onCreate里 setContentView 之后立即 ButterKnife.bind(this);

   protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
    }

绑定View

是用@BindView 替代findViewById

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.btnGet)
    Button mBtnGet;

    @BindView(R.id.tvResult)
    TextView mTvResult;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        mBtnGet.setText("do get");

    }
}

注意: 注解只能用在类成员上, 成员不能用 private 或 static 修饰, 不能用在方法中的局部变量上

绑定 资源

    @BindString(R.string.app_name)
    String appName;

    @BindColor(R.color.colorPrimary)
    int colorPrimary;

    @BindBool(R.bool.bool_name)
    boolean boolName;

还支持更多类型,就不一一列举类

绑定 click 事件

不用声明 view 也不用setOnClickListener   , 参数是可有可无的, 如果不使用,不写省事

    @OnClick(R.id.btnPost) void doPost() {
        mTvResult.setText("do post done");
    }

当然也可以像 onClickListener 一样带上参数

    @OnClick(R.id.btnPost) void doPost(View view) {
        Button btnPost = (Button)view;
        mTvResult.setText("do post done " + btnPost.getText().toString());
    }

还可以把强转都省了,直接在参数上使用要转的确切类型butterknife能帮你自动转型

    @OnClick(R.id.btnPost) void doPost(Button btnPost) {
        mTvResult.setText("do post done " + btnPost.getText().toString());
    }

时间: 2024-10-12 03:44:43

厌烦了写findViewById 试试ButterKnife吧的相关文章

android 使用泛型再也不写findViewById方法了

我们在开发中肯定会findViewById寻找view,如果一个界面上有很多view需要绑定click事件,那么findViewById就是个体力活了,那我们就想能不能有一种办法能不能不必要每次去findViewById呢?只要你去想,说明你就意识到这个问题,剩下来就是想办法如何解决了,这个问题也不能,如果熟悉javase中的泛型,就会很简单的解决,代码入下 public <T> T $(int viewID) { return (T)findViewById(viewID); } 我们只要在

Android Studio插件之快速findViewById(butterknife和Android CodeGenerator的使用)

首先在设置里面的Plugins里面下载安装插件: 安装之后会提示重启, 然后就是怎么使用了: butterknife的使用: 首先在build.gradle(app)里面添加这句话: compile 'com.jakewharton:butterknife:7.0.1' 然后重新编译,进入activity中,选择布局文件R.layout.activity_main点击快捷键alt+shift+(0数字键)选择Butterknife 选择之后会弹出以下的对话框: 选择你要find的控件,然后提交就

准备写api试试,但是ajax一直遇到跨域问题,postman都能正确获取,所以查资料

function goupdathyzt(sqid, zt) { $.ajax({ async: false, url: "http://localhost:17298/api/aaa/sss", type: "get", //必填 contentType: "application/json; charset=utf-8", data: { "huo_id": 13, "huozhu_id": 7 },/

ButterKnife初探

前言 最近证号有时间就写了些东西,发现ButterKnife挺好用的,和大家分享一下,从此告别findViewById. ButterKnife 概要 简介 ButterKnife(黄油刀) 是一个 Android 系统的 View 注入框架,能够通过『注解』的方式来绑定 View 的属性或方法. 比如使用它能够减少 findViewById() 的书写,使代码更为简洁明了,同时不消耗额外的性能. 当然这样也有个缺点,就是可读性会差一些,好在 ButterKnife 比较简单,学习难度也不大.

Android butterknife 实现原理

简介 ButterKnife 是一个 Android 系统的 View 注入框架,能够通过『注解』的方式来绑定 View 的属性或方法. 比如使用它能够减少 findViewById() 的书写,使代码更为简洁明了,同时不消耗额外的性能. 当然这样也有个缺点,就是可读性会差一些,好在 ButterKnife 比较简单,学习难度也不大. 添加依赖 这里以 Android Studio Gradle 为例,为项目添加 ButterKnife,注意两个步骤都要完成: 1. Project 的 buil

AndroidStudio使用偷懒插件Butterknife和GsonFormat

1.Android ButterKnife Zelezny Android Studio上安装插件,如图: 配合ButterKnife实现注解,从此不用写findViewById,想着就爽啊.在Activity,Fragment,Adapter中选中布局xml的资源id自动生成butterknife注解,点击事件也可自动生成. build.gradle引入 compile 'com.jakewharton:butterknife:7.0.1' 现在加载布局文件后面加上如下代码: @Overrid

Butterknife源码

Butterknife用法 我相信学过android开发应该基本上都用过Butterknife吧,就算没用过也听说过吧?毕竟是大名鼎鼎的Jake Wharton出品的东西,如果没用过,就分享下面这篇<java基础之注解annotation>里面虽然是讲的Annotation,但是例子就是用注解加反射实现的低级的Butterknife.哈哈!用法里面大概也说了下. 前言 从 jdk5开始,Java增加了对元数据的支持,也就是Annotation,Annotation其实就是对代码的一种特殊标记,

ButterKnife基本使用

ButterKnife基本使用 Butter Knife处理字段和方法绑定. 重要更新: 目前(2016.4.29), ButterKnife的最新版本是8.0.1. Demo项目已更新: https://github.com/mengdd/AndroidButterKnifeSample 以下原文是针对ButterKnife v6.1.0的, v8.0.1主要的不同在以下几个关键词: @InjectView -> @BindView @InjectViews -> @BindViews Bu

Android快速开发必备——依赖注入(DI)类库的选择ButterKnife,AndroidAnnotations,RoboGuice

关注finddreams,一起学习,一起进步:http://blog.csdn.net/finddreams/article/details/45504133 现在做移动端开发的开发者,不管是Android和IOS,公司一般都是喜欢那种具备独立开发能力的人,因为APP项目相对较小,有时候一个人完全可以单独胜任一个项目.所以如果我们要能够具备独立开发的能力,快速敏捷开发是我们所必须要去思考的事情,毕竟一个人做APP所要做的事情还是挺多的,为了项目的如期上线,我们需要用到各种第三方的库和框架,这样可