网站首页 > 开源技术 正文
Butter Knife这个框架实际上很多人很早就会了,或者说听说了,这里我就不再多赘述了,只是来教一下大家如何去快速上手和使用
一.配置
我们在项目app/build.gradle中添加依赖
implementation 'com.jakewharton:butterknife:8.8.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
二.绑定
要想使用,就必须绑定,这里介绍几种常见的场景
- 1.Activity
- 2.Fragment
- 3.Adapter
在Activity中每次使用都需要bind,所以,我们来写一个基类
public class BaseBindActivity extends AppCompatActivity { @Override public void setContentView(View view) { super.setContentView(view); ButterKnife.bind(this); } @Override public void setContentView(int layoutResID) { super.setContentView(layoutResID); ButterKnife.bind(this); } @Override public void setContentView(View view, ViewGroup.LayoutParams params) { super.setContentView(view, params); ButterKnife.bind(this); } }
这里可以看出,我是重写了setContentView来使用bind,这是因为bind方法一定要在setContentView之后使用
而在Fragment中,我们先来看一份代码
public class TestFragment extends Fragment { private Unbinder mUnbinder; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_test,null); mUnbinder = ButterKnife.bind(this,view); return view; } @Override public void onDestroyView() { super.onDestroyView(); mUnbinder.unbind(); } }
因为Fragment的特殊性,所以需要解绑,在bind的时候回返回一个Unbinder对象,通过他,在onDestroyView中解绑即可
如果是adapter中
class ViewHolder { public ViewHolder(View view) { ButterKnife.bind(this,view); } }
三.使用
public class MainActivity extends BaseBindActivity { //findViewById @BindView(R.id.mTextView) TextView mTextView; @BindView(R.id.mButton) Button mButton; @BindString(R.string.app_name) String mString; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTextView.setText(mString); } //OnClickListener @OnClick(R.id.mButton) public void clickButton(){ mTextView.setText("onclick"); } //OnLongClickListener @OnLongClick(R.id.mButton) public boolean longClickButton(){ mTextView.setText("long click"); return true; } }
我这里只是列举一些常用的,比如BindView,就是findViewById,还有点击事件等,这些可以翻阅资料所得
四.插件
一件生成的插件【Android ButterKnife Zelezny】
案例下载:https://download.csdn.net/download/qq_26787115/10502670
欢迎加入交流群讨论:417046685
- 上一篇: 西餐礼仪:教你如何优雅地使用刀叉
- 下一篇: 闪瞎 | 凑到3cm看,才知道凭什么它们叫「高级定制」
猜你喜欢
- 2024-10-11 搞个AspectJ 玩玩(搞个本科学历有什么用)
- 2024-10-11 架构进阶,Dagger2的原理及使用详解
- 2024-10-11 备战金九银十:当你裸辞遇到了面试难,你需要了解一下这些面试题
- 2024-10-11 使你一生受益的西餐礼仪(你所知道的西餐礼仪有哪些)
- 2024-10-11 推荐几个非常有用的开发工具之Android Studio插件
- 2024-10-11 西餐餐具摆放知识!(西餐餐具如何摆放)
- 2024-10-11 AOP与OOP有什么区别,谈谈AOP的原理是什么
- 2024-10-11 一文揭全埋点神秘面纱:新人避坑,老人进阶
- 2024-10-11 「知识」出国留学必知的西餐用语和西餐礼仪大盘点
- 2024-10-11 西餐礼仪| 接待外商、出国旅行都适用
你 发表评论:
欢迎- 最近发表
-
- 10款鲜为人知的PHP框架(10款鲜为人知的php框架代码)
- 3分钟搞懂反弹shell(反弹shell的常用命令)
- 计算机专业必须掌握的脚本开发语言—shell
- shell 基本语法(shell基本语法set)
- 学习Shell 教程(shell编程学习)
- 一个有意思的PHP Webshell,利用伪协议执行代码
- Linux入门-shell编程-适合小白(linux shell编程是什么)
- GrayLog开源日志管理平台技术文章合集【共58篇】
- AI大模型 MiniMax 基于 Apache Doris 的日志系统,PB 级秒级查询响应
- 互联网大厂后端必看!手把手教你替换 Spring Boot 中的日志框架
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)