程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> ButterKnife,butterknifeandroid

ButterKnife,butterknifeandroid

編輯:JAVA綜合教程

ButterKnife,butterknifeandroid


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();
} 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved