简单的butterknife使用方法
来源:互联网 发布:cad网络图标 编辑:程序博客网 时间:2024/05/17 22:16
第一次写博客。内容也是自己这几天正在看的知识。可能有些地方自己理解有错。望大家提出来。butterknife是一个开源框架。利用它,我们的程序会变得简洁很多。方法就在下面贴出来咯。
一、解放控件对象实例化
1、几种控件的基本使用
class ExampleActivity extends Activity{ @Bind(R.id.ok_btn) //控件对应的ID Button mBtn; @Bind(R.id.title)TextView title; @BindString(R.string.title)String title; @BindDrawable(R.drawable.graphic)Drawable graphic; @BindColor(R.color.red)int red;}
2.Activity
使用 ButterKnife,你只需要在代码中 使用注解方式进行对象申明,然后在 setContentView() 之后调用一句话,那么申明的所有对象自动创建出来。
class ExampleActivity extends Activity { @Bind(R.id.title) TextView title; @Bind(R.id.subtitle) TextView subtitle; @Bind(R.id.footer) TextView footer; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_activity); ButterKnife.bind(this); // 注意此处的 ButterKnife.bind(this); }}
3、framment
调用时要多加一个root view参数。Fragegment使用时记得同时继承onDestroyView,并在其中将ButterKnife.unbind
public class FancyFragment extends Fragment { @Bind(R.id.button1) Button button1; @Bind(R.id.button2) Button button2; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fancy_fragment, container, false); ButterKnife.bind(this, view); // 注意此处比activity多一个view参数 ButterKnife.bind(this, view); return view; } @Override public void onDestroyView() { super.onDestroyView(); //记住在onDestroyView()中ButterKnife.unbind(this); ButterKnife.unbind(this); }}
4、Adapter
public class MyAdapter extends BaseAdapter { @Override public View getView(int position, View view, ViewGroup parent) { ViewHolder holder; if (view != null) { holder = (ViewHolder) view.getTag(); } else { view = inflater.inflate(R.layout.whatever, parent, false); holder = new ViewHolder(view); view.setTag(holder); } holder.name.setText("John Doe"); // etc... return view; } static class ViewHolder { @Bind(R.id.title) TextView name; @Bind(R.id.job_title) TextView jobTitle; public ViewHolder(View view) { //此处 ButterKnife.bind(this, view); ButterKnife.bind(this, view); } }}
5、控件数组
@Bind({ R.id.first_name, R.id.middle_name, R.id.last_name })List<EditText> nameViews;
二、解放监听添加
1、Listeners can also automatically be configured onto methods.
(Listeners 可以自动配置方法)
@OnClick(R.id.submit)public void submit(View view){// TODO submit data to server...}
2、All arguments to the listener method are optional.
(所有监听器的参数都是可选的)
@OnClick(R.id.submit)public void submit(){// TODO submit data to server...}
3、Define a specific type and it will automatically be cast.
(定义一个特定的类,他将自动转换)
@OnClick(R.id.submit) public void sayHi(Button button){ button.setText("Hello!"); }
4、Specify multiple IDs in a single binding for common event handling.
(指定多个ID在同一个监听事件中)
@OnClick({ R.id.door1, R.id.door2, R.id.door3 })public void pickDoor(DoorView door){ if(door.hasPrizeBehind()) { Toast.makeText(this,"You win!", LENGTH_SHORT).show();}else{Toast.makeText(this,"Try again", LENGTH_SHORT).show(); } }
5、Custom views can bind to their own listeners by not specifying an ID.
(自定义视图可以不指定ID来绑定自己的听众)
public class FancyButton extends Button{@OnClick public void onClick(){// TODO do something!}}
6、Listview的监听
@OnItemSelected(R.id.list_view)void onItemSelected(int position){// TODO ...}@OnItemSelected(value = R.id.maybe_missing, callback = NOTHING_SELECTED)void onNothingSelected(){// TODO ...}
三、关于异常
默认情况下 @Bind和@OnClick都是必须加上的,如果当前对象不存在,就会抛出一个异常
为了压制这个异常,可以在变量或者方法上加入一下注解@Nullable
@Nullable@Bind(R.id.might_not_be_there)TextView mightNotBeThere;@Nullable@OnClick(R.id.maybe_missing)void onMaybeMissingClicked(){// TODO ...}
- 简单的butterknife使用方法
- Android ButterKnife的使用方法
- ButterKnife的简单使用
- ButterKnife的简单使用
- Butterknife 的简单模拟
- Butterknife的简单使用
- ButterKnife的简单使用
- 简单的 Butterknife
- ButterKnife 使用方法
- ButterKnife 使用方法
- ButterKnife 使用方法
- Android ButterKnife的简单例子
- Android Butterknife使用方法总结
- 简单实现ButterKnife的注解功能
- 超级简单的ButterKnife使用技巧
- Android注解框架(ButterKnife的简单使用)
- 利用注解实现简单的ButterKnife
- android butterknife框架的简单使用
- HDU 5054 Alice and Bob——BestCoder Round #11(div.2)
- HDU 5339 Untitled(枚举)
- iOS_UI_4_UIButton
- Swift2.0发布以来的历次主要更新
- FL2440根文件系统的制作(完整版)
- 简单的butterknife使用方法
- Git的使用七(删除文件)仅限Mac亲测
- Hadoop学习-hadoop常用命令
- LeetCode Unique Binary Search Trees
- 对号动画实现
- Java中JDBC的基本步骤
- HDU-1301 Jungle Roads
- js内置对象属性及方法
- HDU2426 Interesting Housing Problem(KM匹配 )