黄油刀 butterKnife:
自动findViewByID(),自动添加点击事件onClick();
步骤:
1.引入依赖包 butterknife:8.4.0 jakewharton:butterknife:8.4.0
2.安装插件 Android ButterKnife Zelezny
3.配置build
1、工程的gradle文件增加android-apt插件的classpath
dependencies {
...
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
2、模块的gradle文件头部,增加使用插件的声明:
apply plugin: 'com.neenbedankt.android-apt'
3、模块gradle的依赖部分,增加依赖本身,及使用apt处理依赖脚本:
compile 'com.jakewharton:butterknife:8.4.0'
apt 'com.jakewharton:butterknife-compiler:8.4.0'
4.使用:
鼠标停在想要找控件的布局上,按Alt +Insert ,如图选择
Generate ButterKnife Injections 如下图:
勾选你想要添加点击事件的控件,点击Confirm确定。如下图:
就会生成如下标记的代码:
在listView中使用黄油刀:
在listView中使用黄油刀:
代码:
public class MyListAdapter extends BaseAdapter
Context mContext;
LayoutInflater inflater;
ViewHolder holder;
public MyListAdapter(Context mContext) {
this.mContext = mContext;
inflater = LayoutInflater.from(mContext);
}
public int getCount() {
return 40;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.mylist_layout, parent, false);
holder=new ViewHolder(convertView);
convertView.setTag(holder);
}else{
holder= (ViewHolder) convertView.getTag();
}
return convertView;
}
class ViewHolder {
@BindView(R.id.iv)
ImageView iv;
@BindView(R.id.tv1)
TextView tv1;
@BindView(R.id.tv2)
TextView tv2;
ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
}
public class MainActivity extends AppCompatActivity {
MyListAdapter adapter;
@BindView(R.id.lv)
ListView lv;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
adapter=new MyListAdapter(this);
lv.setAdapter(adapter);
}
@OnItemClick(R.id.lv)
public void onItemClick( int position) {
Toast.makeText(MainActivity.this, "这是第"+position+"个", Toast.LENGTH_SHORT).show();
}
}