ButterKnife使用

来源:互联网 发布:区域经济考研知乎 编辑:程序博客网 时间:2024/04/30 20:28

本文主要介绍butterKnife1.8,之前的也都是大同小异。

功能1: 再也不用写findViewById()了.

功能2: 再也不用写setOnClickListener()了.

功能3: 组建View List: 把多个View放在一起用.

这里推荐大家一个插件Android butterknife Zelezny



在app的gradle里配置如下:
apply plugin: 'com.android.application'apply plugin: 'com.neenbedankt.android-apt'android {    compileSdkVersion 22    buildToolsVersion "22.0.1"    defaultConfig {        applicationId "com.example.mengdd.butterknifesample"        minSdkVersion 14        targetSdkVersion 22        versionCode 1        versionName "1.0"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    compile 'com.android.support:appcompat-v7:22.1.1'    compile 'com.jakewharton:butterknife:8.0.1'    apt 'com.jakewharton:butterknife-compiler:8.0.1'}
Project:
buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:2.1.0'        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }}allprojects {    repositories {        jcenter()    }}
一定要注意gradle中的配置,否则绑定会报错
如果都配置成功了,那么我们就可以继续向下来愉快的探索了。废话不多说,先看下效果:


Activity中使用butterKnife:
@BindView(R.id.samples_list)ListView mListView;
@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    ButterKnife.bind(this);//注:必须在setContentView()以下}
上面推荐的那个插件,如果小伙伴们已经安装的话,可以把鼠标放在R.layout.activity_main上 ,
然后按你设置的快捷键就可以自动生成ButterKnife.bind(this)啦;
Fragment中使用:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {    View view = View.inflate(getActivity(), R.layout.homepage_fragment_layout, null);    ButterKnife.bind(this, view);
    return view;
}
Adapter中使用:
public static class ViewHolder {    @BindView(R.id.lv_item)    TextView lvItem;    @BindView(R.id.iv_ok)    ImageView ivOk;    ViewHolder(View view) {        ButterKnife.bind(this, view);    }}

使用ButterKnife设置多个按钮监听事件:
@OnClick({R.id.tv_back, R.id.iv_details})void onClick(View view) {    switch (view.getId()) {        case R.id.tv_back:            break;        case R.id.iv_details:            break;    }}

View集合中的使用

可以将多个view组成一个List或数组。

@Bind({ R.id.first_name, R.id.middle_name, R.id.last_name })
List<EditText> nameViews;

apply方法可以一次作用到所有的View。

ButterKnife.apply(nameViews, DISABLE);
ButterKnife.apply(nameViews, ENABLED, false);

Action 和 Setter 接口可以指定简单的行为。

static final ButterKnife.Action<View> DISABLE = new ButterKnife.Action<View>() {
  @Override public void apply(View view, int index) { 
   view.setEnabled(false); 
 }};
static final ButterKnife.Setter<View, Boolean> ENABLED = new ButterKnife.Setter<View, Boolean>() { 
 @Override public void set(View view, Boolean value, int index) {  
  view.setEnabled(value);
 }};
这样大家就可以愉快的使用ButterKnife了,不足之处,还请各位包含。



demo下载链接:http://download.csdn.net/download/qq_33220645/9626559



0 0
原创粉丝点击