1、簡介 ButterKnife是註解中相對簡單易懂的很不錯的開源框架 1.強大的View綁定和Click事件處理功能,簡化代碼,提升開發效率 2.方便的處理Adapter里的ViewHolder綁定問題 3.運行時不會影響APP效率,使用配置方便 4.代碼清晰,可讀性強 2、下載地址 https: ...
1、簡介
ButterKnife是註解中相對簡單易懂的很不錯的開源框架
1.強大的View綁定和Click事件處理功能,簡化代碼,提升開發效率
2.方便的處理Adapter里的ViewHolder綁定問題
3.運行時不會影響APP效率,使用配置方便
4.代碼清晰,可讀性強
2、下載地址
https://github.com/JakeWharton/butterknife
3、使用步驟
1)在Setting->Plugins中輸入butterknife添加插件
Android ButterKnife Aelezny ->點擊安裝
2)Module里的build.gradle裡面添加
compile 'com.jakewharton:butterknife:7.0.1'
4、常用功能
本文主要針對7.0.1版本
1)省略findViewById()
(1)Activity中使用
以前 mTextView1 = (TextView) findViewById(R.id.butter_text_view_1);
現在
@InjectView(R.id.butter_text_view_2)
TextView mTextView2;
在設置好佈局之後調用:ButterKnife.inject(this);:
註意
View變數聲明的時候不能為private或者static.
(2)Fragment中使用
public class SimpleFragment extends Fragment { @InjectView(R.id.fragment_text_view) TextView mTextView; public SimpleFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_simple, container, false); ButterKnife.inject(this, view); mTextView.setText("TextView in Fragment are found!"); return view; } }
(3)Adapter ViewHolder中使用
@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.person_item_layout, null); holder = new ViewHolder(convertView); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } Person person = getItem(position); if (null != person) { holder.name.setText(person.getName()); } return convertView; } static class ViewHolder { @InjectView(R.id.person_name) TextView name; public ViewHolder(View view) { ButterKnife.inject(this, view); } }
2)省略setOnClickListener()
@OnClick(R.id.basic_finish_a_button) void finishA(View view) { finish(); }
ButterKnife.inject(this);
註意
註意這裡方法仍然不能是private和static, 並且可以有一個參數View,也可不寫.
3)ListView的點擊@OnItemClick, CheckBox的@OnCheckedChanged也可以實現省略操作
4)可以一次指定多個id,為多個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(); }