一,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插件

Android库--ButterKnife(View注入库,安装ButterKnife Zelezny插件)
没有安装的 要在商城安装
Android库--ButterKnife(View注入库,安装ButterKnife Zelezny插件)

Android库--ButterKnife(View注入库,安装ButterKnife Zelezny插件)

使用 右键点击布局
Android库--ButterKnife(View注入库,安装ButterKnife Zelezny插件)Android库--ButterKnife(View注入库,安装ButterKnife Zelezny插件)

相关文章:

  • 2021-10-24
  • 2021-12-17
  • 2021-11-23
  • 2021-07-05
  • 2021-10-31
猜你喜欢
  • 2021-09-14
  • 2021-12-22
  • 2021-09-26
  • 2021-04-14
  • 2021-09-02
  • 2021-08-23
  • 2021-04-12
相关资源
相似解决方案