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自動找到並把相應的視圖布局。

 1 class ExampleActivity extends Activity {
 2 @BindView(R.id.title) TextView title;
 3 @BindView(R.id.subtitle) TextView subtitle;
 4 @BindView(R.id.footer) TextView footer;
 5 @Override public void onCreate(Bundle savedInstanceState) {
 6 super.onCreate(savedInstanceState);
 7 setContentView(R.layout.simple_activity);
 8 ButterKnife.bind(this);
 9 }
10 }

 



上面代碼相當於:

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

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM