ButterKnife与BindView使用详解

ButterKnife与BindView使用详解

ButterKnife的优势

具有强大的view绑定和click事件处理能力
方便处理Adapter里的viewHolder绑定问题
运行时不会影响app效率,配置方便
代码清晰,可读性强、

使用方法以及注意事项:

在Activity中ButterKnife.bind(this);必须在setContentView();之后,且父类bind绑定后,子类不需要再bind
在Fragment中ButterKnife.bind(this, view);
在Adapter中ButterKnife.bind(this, view);
属性布局不能使用private、static修饰

配置方法

先在application的gradle中加入//后内容

 dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'
   //     classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
    }

再在app的gradle中加入//后内容

dependencies {

    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:28.0.0'
    testCompile 'junit:junit:4.12'
 //   implementation 'com.jakewharton:butterknife:8.5.1'
 //   annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'

}

绑定注解

@BindView---->绑定一个view;id为一个view 变量
@BindView(R.id.tv_fm1)
TextView tvFm1;

@BindViews ---->绑定多个view;id为一个view的list变量
@BindViews({ R.id.btn1,R.id.btn2 })
List buttons;

@BindArray---->绑定string里面array数组;
@BindArray(R.array.city )
String[] citys ;

@BindBitmap---->绑定图片资源为Bitmap;
@BindBitmap(R.mipmap.wifi )
Bitmap bitmap;

@BindBool ---->绑定boolean值

@BindColor ---->绑定color;
@BindColor(R.color.colorAccent)
int black;

@BindDimen ---->绑定Dimen;
@BindDimen(R.dimen.borth_width)
int mBorderWidth;

@BindDrawable ----> 绑定Drawable;
@BindDrawable(R.drawable.test_pic)
Drawable mTestPic;

@BindFloat ---->绑定float

@BindInt ---->绑定int

@BindString ---->绑定一个String id为一个String变量;
@BindString(R.string.app_name )
String meg;
如下代码即使用@BindView和一个视图ID注释字段 ,Butter Knife自动找到并把相应的视图布局。

class ExampleActivity extends Activity {
  @BindView(R.id.title) TextView title;
  @BindView(R.id.subtitle) TextView subtitle;
  @BindView(R.id.footer) TextView footer;
  @Override public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.simple_activity);
    ButterKnife.bind(this);
  }
}

上面代码相当于:

public void bind(ExampleActivity activity) {
  activity.subtitle = (TextView) activity.findViewById(R.id.subtitle);
  activity.footer = (TextView) activity.findViewById(R.id.footer);
  activity.title = (extView) activity.findViewById(R.id.title);
}

你可能感兴趣的:(Android开发,Android开发)