首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

ButterKnife 入門指南:View 綁定與事件處理的高效實踐

     編輯:Java 綜合教學

ButterKnife 入門指南:View 綁定與事件處理的高效實踐

1. 簡介

ButterKnife 是一款基於註解的輕量級開源框架,專為 Android 開發設計,核心優勢在於:

  • 強大的 View 綁定與點擊事件處理,大幅減少樣板碼,提升開發效率。
  • 完美解決 Adapter 中 ViewHolder 綁定痛點。
  • 編譯時生成程式碼,運行期零性能損耗,配置簡單。
  • 程式碼結構清晰,可讀性極強。

2. 專案地址

GitHub:https://github.com/JakeWharton/butterknife

3. 接入步驟(以 7.0.1 版為例)

  1. 安裝插件: Settings → Plugins 搜尋 ButterKnife,安裝 Android ButterKnife Zelezny。
  2. 添加依賴: 在 Module 的 build.gradle 中引入:
    compile 'com.jakewharton:butterknife:7.0.1'

4. 核心功能實戰

4.1 省略 findViewById()

Activity 中使用:

@InjectView(R.id.butter_text_view_2)
TextView mTextView2;

// 在 setContentView() 之後調用
ButterKnife.inject(this);

注意: 被註解的 View 變數不能為 private 或 static。

Activity 注入示例

Fragment 中使用:

public class SimpleFragment extends Fragment {
    @InjectView(R.id.fragment_text_view)
    TextView mTextView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_simple, container, false);
        ButterKnife.inject(this, view); // 傳入 view
        mTextView.setText("TextView in Fragment are found!");
        return view;
    }
}

Adapter ViewHolder 中使用:

static class ViewHolder {
    @InjectView(R.id.person_name)
    TextView name;

    public ViewHolder(View view) {
        ButterKnife.inject(this, view);
    }
}

// 在 getView() 中
if (convertView == null) {
    convertView = mInflater.inflate(R.layout.person_item_layout, null);
    holder = new ViewHolder(convertView);
    convertView.setTag(holder);
} else {
    holder = (ViewHolder) convertView.getTag();
}

4.2 省略 setOnClickListener()

@OnClick(R.id.basic_finish_a_button)
void finishA(View view) { // 參數可選
    finish();
}

// 同樣需調用 ButterKnife.inject(this);
// 方法同樣不能為 private 或 static

4.3 其他事件註解

  • @OnItemClick:ListView 項目點擊
  • @OnCheckedChanged:CheckBox 狀態變更

4.4 多 View 共用一個事件處理方法

@OnClick({R.id.button_enable, R.id.button_disable, R.id.button_alpha_0, R.id.button_alpha_1})
void editViewsClicked() {
    Toast.makeText(this, "You click the Button!", Toast.LENGTH_SHORT).show();
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved