标签:Toast button1 ButterKnife 使用 Android View id textView view
ButterKnife是一个专注于Android系统的View注入框架,通过此种方式,无需再写findViewById来获取View对象,简化了代码的书写,提高开发效率。
- 构建
早时期,ButterKnife构建时比较繁琐,需要在Project和module中添加,现在经过优化,只需要在module中的build.gradle中加入以下两行代码即可,以8.8.1为例。
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
-
使用
1.使用@BindView 来代替findViewById 完成View的引用。
2.将多个View组合成list或者array,使用actions,setters或者属性来同时操作它们。
3.使用@OnClick等注解字段来注解方法,从而来代替监听器中的匿名内部类。
4.使用@BindString等注解字段来注解字段,从而来代替Context.getString等获取资源的方式。示例:
public class MainActivity extends AppCompatActivity {
//绑定单个view
@BindView(R.id.textView)
TextView mTextView;
//绑定多个view
@BindViews({R.id.button1, R.id.button2})
ArrayList<Button> mButtonList;
private Unbinder mUnbinder = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mUnbinder = ButterKnife.bind(this);//这个一定要记得使用之前,先加上,否则的话mTextView、mButtonList为null
}
//绑定点击事件
@OnClick({R.id.textView, R.id.button1, R.id.button2})
public void onClick(View view) {
switch (view.getId()) {
case R.id.textView:
Toast.makeText(MainActivity.this, "onClick : TextView is clicked!", Toast.LENGTH_SHORT).show();
break;
case R.id.button1:
Toast.makeText(MainActivity.this, "onClick : Button1 is clicked!", Toast.LENGTH_SHORT).show();
break;
}
}
//绑定长按事件
@OnLongClick({R.id.textView, R.id.button1, R.id.button2})
public void onLongClick(View view) {
switch (view.getId()) {
case R.id.textView:
Toast.makeText(MainActivity.this, "onLongClick : TextView is clicked!", Toast.LENGTH_SHORT).show();
break;
case R.id.button1:
Toast.makeText(MainActivity.this, "onLongClick : Button1 is clicked!", Toast.LENGTH_SHORT).show();
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
mUnbinder.unbind();//解绑
}
}
标签:Toast,button1,ButterKnife,使用,Android,View,id,textView,view 来源: https://blog.csdn.net/weixin_42604414/article/details/88194377
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。