注入依賴:
compile 'com.jakewharton:butterknife:8.4.0'
// 編譯的時候的註解解析器,生成一套新的代碼
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
apply plugin: 'com.jakewharton.butterknife'
插件:
dependencies {
classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
主代碼:
package com.example.my_bufferknife;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class MainActivity extends AppCompatActivity {
@BindView(R.id.tv1)
TextView textView;
@BindView(R.id.lv)
ListView listView;
private List<String> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//這個綁定方法必須在setcontentview之後,不然會報錯
ButterKnife.bind(this);
textView.setText("出來吧");
initDate();
listView.setAdapter(new MyAdpater(this,list));
}
private void initDate() {
list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
list.add("意外不"+i);
}
}
@OnClick({R.id.bt1,R.id.bt2,R.id.bt3})
public void dianBt(View view){
switch (view.getId()){
case R.id.bt1:
Toast.makeText(this, "新年", Toast.LENGTH_SHORT).show();
break;
case R.id.bt2:
Toast.makeText(this, "快樂", Toast.LENGTH_SHORT).show();
break;
case R.id.bt3:
Toast.makeText(this, "哈哈", Toast.LENGTH_SHORT).show();
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
Adapater:
package com.example.my_bufferknife;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by admin on 2018/1/25.
*/
public class MyAdpater extends BaseAdapter {
private Context context;
private List<String> list;
public MyAdpater(Context context, List<String> list) {
this.context = context;
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
ViewHolder viewHolder = null;
if (view == null) {
view = View.inflate(context, R.layout.datatext, null);
viewHolder = new ViewHolder(view);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}
viewHolder.tv.setText(list.get(i));
return view;
}
static class ViewHolder {
//註解綁定控件
@BindView(R.id.lv_tv)
TextView tv;
//通過有參構造註解綁定佈局
public ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
}
Fragment(僞代碼):
package com.example.my_bufferknife;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by admin on 2018/1/25.
*/
public class Myfragment extends Fragment {
private View myview;
@BindView(R.id.tv1)
TextView textView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
myview = inflater.inflate(R.layout.activity_main, container,false);
ButterKnife.bind(this,myview);
// textView.setText("我是fragment");
return myview;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}
xml文檔(MainActivity):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.my_bufferknife.MainActivity">
<TextView
android:textSize="50dp"
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:id="@+id/bt1"
android:text="點點"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:text="點點"
android:id="@+id/bt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:text="點點"
android:id="@+id/bt3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="wrap_content"></ListView>
</LinearLayout>