(二十二)ButterKnife框架面試問題

一、Butterknife使用簡介

Butterknife是一個依托Java的注解機制來實現(xiàn)輔助代碼生成的框架,不通過反射機制。

在Android Studio中引入Butterknife需在build.gradle中加入如下代碼:

dependencies {
  compile 'com.jakewharton:butterknife:8.8.1'
  annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}

使用步驟:

1.綁定一個View

2.給一個View添加點擊事件

3.給多個View添加點擊事件

4.給ListView setItemClickListener

public class MainActivity extends AppCompatActivity {

    //1.綁定一個View(View不能為private 或者 static)
    @BindView(R.id.textview)
    TextView mTextView;

    //1.綁定一個View(View不能為private 或者 static)
    @BindView(R.id.mlistview)
    ListView mListView;

    //1.綁定一個View(View不能為private 或者 static)
    @BindView(R.id.imageview)
    ImageView mImageView;

    //2.給一個view添加點擊事件
    @OnClick({R.id.textview, R.id.imageview})
    public void onTextViewClick() {
        Toast.makeText(this, "onTextViewClick", Toast.LENGTH_SHORT).show();
    }

    //3.給ListView setItemClickListener
    @OnItemClick(R.id.mlistview)
    public void onItemClick() {
        Toast.makeText(this, "onItemClick", Toast.LENGTH_SHORT).show();
    }

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

二、Butterknife原理

1.開始回掃描Java代碼中所有的Butterknife注解

2.ButterKnifeProcessor會生成<className>$$ViewBinder內(nèi)部類

3.調(diào)用bind方法加載生成的ViewBinder類

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容