一,ButterKnife简介
特点:注入View以及事件,提升开发效率
二,导入
步骤1:在project的build.gradle文件中的dependencies下添加
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
//添加这个
classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
步骤2:在module的build.gradle文件中的dependecies下添加依赖
compile'com.jakewharton:butterknife:8.5.1'
annotationProcessor'com.jakewharton:butterknife-compiler:8.5.1'
三,注入View,事件,资源
public class MainActivity extends AppCompatActivity {
//注入view
@BindView(R.id.one)
TextView one;
@BindView(R.id.two)
Button two;
@BindView(R.id.three)
Button three;
//注入资源
@BindString(R.string.app_name)
String str;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
one.setText(str);
}
//注入点击事件
@OnClick({R.id.two,R.id.three})
public void onclict(View view){
switch (view.getId()){
case R.id.two:
Toast.makeText(this,"1",Toast.LENGTH_SHORT).show();
break;
case R.id.three:
Toast.makeText(this,"2",Toast.LENGTH_SHORT).show();
break;
}
}
}
四,注入listView 和 item点击事件
public class ListViewActivity extends AppCompatActivity {
@BindView(R.id.list)
ListView listView;
private List<String> mData = new ArrayList<>(Arrays.asList("dad","dadaf"));
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view);
ButterKnife.bind(this);
listView.setAdapter(new ListAdapter(this,mData));
}
@OnItemClick(R.id.list)
public void Itemonclicked(int pos){
Toast.makeText(this,"" + pos,Toast.LENGTH_SHORT).show();
}
}
public class ListAdapter extends ArrayAdapter<String> {
private LayoutInflater inflater;
public ListAdapter(Context context, List<String> objects) {
super(context, -1,objects);
inflater = LayoutInflater.from(context);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
ViewHolder viewHolder = null;
if(convertView == null){
convertView = inflater.inflate(R.layout.item_list,parent,false);
viewHolder = new ViewHolder(convertView);
viewHolder.textView = convertView.findViewById(R.id.item);
convertView.setTag(viewHolder);
}else {
viewHolder =(ViewHolder) convertView.getTag();
}
viewHolder.textView.setText(getItem(position));
return convertView;
}
static class ViewHolder{
@BindView(R.id.item)
TextView textView;
public ViewHolder(View view){
ButterKnife.bind(this,view);
}
}
}
五,注入RecyclerView和 item点击事件
public class ReActivity extends AppCompatActivity {
@BindView(R.id.re)
RecyclerView recyclerView;
private List<String> mData = new ArrayList<>(Arrays.asList("dad","dadaf"));
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_re);
ButterKnife.bind(this);
recyclerView.setAdapter(new ReAdapter(this,mData));
recyclerView.setLayoutManager(new LinearLayoutManager(this));
}
@OnItemClick(R.id.re)
public void onclick(int po){
switch (po){
case 0:
Toast.makeText(this,"0",Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(this,"1",Toast.LENGTH_SHORT).show();
break;
}
}
}
public class ReAdapter extends RecyclerView.Adapter<ReAdapter.ViewHolder> {
private LayoutInflater layoutInflater;
private List<String> mdata;
public ReAdapter(Context context,List<String> mdata) {
layoutInflater = LayoutInflater.from(context);
this.mdata = mdata;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ReAdapter.ViewHolder(layoutInflater.inflate(R.layout.item_list,parent,false));
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.textView.setText(mdata.get(position));
}
@Override
public int getItemCount() {
return mdata.size();
}
static class ViewHolder extends RecyclerView.ViewHolder
{
@BindView(R.id.item)
TextView textView;
public ViewHolder(View itemView) {
super(itemView);
ButterKnife.bind(this,itemView);
}
}
}
六,添加ButterKnife Zelezny插件
没有安装的 要在商城安装
使用 右键点击布局