android butterknife 自定义view,android框架之ButterKnife注解式框架

2023-05-16

ButterKnife注解式框架简介

所谓注解式顾名思义就是利用注解的方式将代码抽象化,每次使用只需要传递key和value值就行了,ButterKnife框架将View定义和点击事件很好的进行了注解式抽象,利用它我们不必使用findViewById和setOnClickListener,极大的简化了我们的代码,ButterKnife还对listView的ViewHolder提供了方便的绑定处理。

ButterKnife的特点

方便的处理View绑定和Click事件,结构清晰,代码简洁,提供开发效率;

方便处理ListView中ViewHolder的绑定事件;

运行时不会影响app效率,使用配置方便;

代码思路清晰,可读性强

那么应该如何利用注解式框架开发程序呢,请看下面的实例代码:

首先将jar包复制到程序的libs里面,然后进行配置:

1.勾选Annotation里面的Enable project specific setting

bVoRZo

2.勾选Factory Path里面的Enable project specific setting

bVoRZp

Add JARs

bVoRZs

bVoRZu

配置完成后开始写代码:

首先声明view

@InjectView (R.id.tv1)

TextView tv1;

@InjectView(R.id.tv2)

TextView tv2;

给View设置点击监听事件:

@OnClick({R.id.tv1,R.id.tv2})

public void test(View v)

{

if(v.getId()==R.id.tv1)

{

Toast.makeText(this, "你好", 1).show();

}else if(v.getId()==R.id.tv2){

Toast.makeText(this, "你好2", 1).show();

}

}

在onCreate(Bundle savedInstanceState)里面注册

ButterKnife.inject(this);

这样View的点击事件就OK了。

然后就是在listView绑定ViewHolder:

自己写一个Adapter类继承BaseAdapter

定义一个内部类:

class ViewHolder{

@InjectView(R.id.itemTv)

TextView tv;

@InjectView(R.id.itemBt)

Button bt;

public ViewHolder(View v){

ButterKnife.inject(this,v);

}

}

在getView方法里面:

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder = null;

if(convertView==null)

{

convertView = View.inflate(context, R.layout.item, null);

holder = new ViewHolder(convertView);

convertView.setTag(holder);

}else{

holder = (ViewHolder) convertView.getTag();

}

holder.tv.setText(list.get(position));

holder.bt.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

Toast.makeText(context, "button", 1).show();

}

});

return convertView;

}

在MainActivity注册绑定自定义的Adapter就可以了:

MyAdapter adapter = new MyAdapter(this, list);

listView.setAdapter(adapter);

如果看不懂lz杂乱的写法那么就去移驾极客学院吧,很详细的视频教程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android butterknife 自定义view,android框架之ButterKnife注解式框架 的相关文章

  • 安卓无法玩ogg

    有人知道这是什么意思吗 ogg使用phonegap is Media播放 它使用MediaPlayer 05 26 15 41 50 007 1160 3631 E AudioFlinger no more track names avai
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • FileNotFoundException:/存储/模拟/0/Android

    我尝试这个文件写入器 读取器代码段进行测试 File file new File Environment getExternalStorageDirectory LM lm lisdat 01 txt FileOutputStream ou
  • Retrofit-2 内容类型问题

    我的 Api 接受 Content Type application json 作为标头 我按照改造文档中所述完美设置了标题 Headers Content Type application json POST user classes C
  • Android 应用被 Google Play 拒绝

    我最近向 Google Play 商店提交了一个 Android 应用程序 但收到一条消息说我的应用程序已被拒绝 我不确定问题是什么 也找不到确切的解决方案 拒绝原因 违反了禁止行为条款 内容政策 经过定期审核后 我们确定您的应用程序支持
  • Firestore - RecycleView - 图像持有者

    我不知道如何编写图像的支架 我已经设置了 2 个文本 但我不知道图像的支架应该是什么样子 你能帮我告诉我图像的文字应该是什么样子才能正确显示吗 holder artistImage setImageResource model getArt
  • 尝试在模拟器上安装第二个 flutter 应用程序时出错

    我创建了一个简单的 flutter 应用程序并在 android 模拟器上运行它 效果还不错 现在我创建了另一个 当我尝试在模拟器上运行它时 我得到 Error ADB exited with exit code 1 adb failed
  • 如何强制从本机代码打开 Android 软键盘?

    我有一个游戏 当用户触摸屏幕时 它使用从 C 到 Java 的回调来强制打开软键盘 Java代码很简单是这样的 this inputMethodManager toggleSoftInput InputMethodManager SHOW
  • 如何将 android.net.Uri 转换为 java.net.URL? [复制]

    这个问题在这里已经有答案了 有没有办法从Uri to URL 我正在使用的库需要这个 它only接受一个URL但我需要在我的设备上使用图像 如果该方案的Uri is http or https new URL uri toString 应该
  • finish() 完成活动但它仍然在后台

    我有一个关于 android studio 中活动的 finish 方法的问题 我有这个简单的代码 public class MainActivity extends AppCompatActivity Override protected
  • Web 视图未在 Android 中加载本地 html 文件

    I am integrating html in android I have created a web view But i am not able load local html page Surprisingly web view
  • 以编程方式将 TextView 添加到主屏幕小部件

    我想以编程方式将文本视图控件添加到我的主屏幕小部件 在下面的示例中 我使用 TextView 填充 Linearlayout 但是这里应该如何使用 RemoteView 它只接受 xml 资源布局作为参数 public class MyWi
  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • onBackPressed 隐藏 不破坏 Activity

    我知道如何取消后退按键 以便活动 主窗口保持可见 public void onBackPressed return 我的目标是隐藏该活动 但是 在没有完成它的情况下 您如何在 onBackPressed 事件中做到这一点 即我想达到 onP
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • 直接使用从密钥库加载的 SecretKey 时,密钥用户未经过身份验证

    我正在尝试使用 Cipher 和在 KeyStore 中加载的 SecretKey 来加密数据 但总是收到此错误 导致 android security KeyStoreException 关键用户未经过身份验证 我尝试自己创建 Secre
  • FCM onMessageReceived 应用程序运行时返回空白消息和标题

    正如您在标题中所写 当应用程序关闭时 它运行良好 并且onMessageReceived获取消息正文和标题 但如果应用程序处于前台模式 运行模式 则可以发送通知 但没有消息和标题 请问该怎么办 代码 Override public void
  • Android:解析 XML 数据的最佳解析器 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在开发一个应用程序 其中我第一次要解析来自远程服务器的 xml 文件中的数据 但我无法选择哪个解析器是有效的或最适合解析的 因为我知道主要有
  • Android ScrollView fillViewport 不工作

    我有一个简单的布局 名称位于顶部 按钮位于屏幕底部 或者超出该按钮 以防我添加更多项目 所以我使用带有 LinearLayout 的 ScrollView 如下所示
  • Android:如何检测手机设置中的语言已更改

    我如何检测我的手机语言是否已更改 例如 Facebook 应用程序将向我们宣布 please wait we preparing your language i used myString Locale getDefault getDisp

随机推荐

  • 数据库索引的基础知识

    一 理解索引的结构 索引在数据库中的作用类似于目录在书籍中的作用 xff0c 用来提高查找信息的速度 使用索引查找数据 xff0c 无需对整表进行扫描 xff0c 可以快速找到所需数据 微软的SQL SERVER提供了两种索引 xff1a
  • 如何解包/编辑/打包boot.img文件

    感谢本文的作者 xff1a Alansj DarkriftX RyeBrye Will Try OP9 Tonyb486 Timmmm Lxrose还有好多不知名的作者们在wiki上的不懈努力 来源 xff1a http android d
  • 【慢慢学算法】:连通图

    题目描述 xff1a 给定一个无向图和其中的所有边 xff0c 判断这个图是否所有顶点都是连通的 输入 xff1a 每组数据的第一行是两个整数 n 和 m xff08 0 lt 61 n lt 61 1000 xff09 n 表示图的顶点数
  • 好的网站收藏---长期更新---长期更新---长期更新---长期更新--

    影视 http www bestxl com 老调网 小浪 http www bttiantang com BT天堂 http oabt org P2P xff0c 中英双语 音乐 书籍 开发 http bbs chinaunix net
  • dump文件,windbg

    dump文件 xff0c 在VC中的调试还是非常非常非常有用的 xff0c 因为我们也不会经每一行代码都加上日志 xff0c 当然如果你愿意 xff0c 也可以每一行都加上日志 xff1b 在Windows上 xff0c 添加dump文件有
  • CSS元素定位

    使用 CSS 选择器定位元素 CSS可以通过元素的id class 标签 xff08 input xff09 这三个常规属性直接定位到 xff0c 而这三种编写方式 xff0c 在HTML中编写style的时候 xff0c 可以进行标识如
  • 极度吸引人的Linode日本机房,已经成为华人大茅房

    Linode主机一直是业内比较认可的好服务商 我的几个站点也挂在Linode 但是一直在Fremont CA机房 今儿是心血来潮把主机转到了JP Tokyo xff0c 结果就出现了下面的事件 事件 事件 自从半个小时以前把Fremont的
  • FTP服务器FileZilla Server配置及使用方法

    FileZilla Server 下载安装完成后 xff0c 安装过程不写说明了 xff0c 网上一抓一大把 xff0c 直接从配置开始记录 1 创建服务器 Password xff1a 栏位中输入本服务器 Filezilla 服务的密码
  • 阿里云安全肖力:云原生安全构筑下一代企业安全架构

    34 数字经济的发展驱动越来越多的企业上云 xff0c 每个企业都会基于云原生安全能力构筑下一代企业安全架构 xff0c 完成从扁平到立体式架构的进化 xff0c 届时云原生安全技术红利也将加速释放 xff01 9月27日 xff0c 阿里
  • Vue 自定义按键修饰符

    如点击F2 触发某个事件 lt input type 61 34 button 34 name 61 34 34 id 61 34 34 value 61 34 添加 34 64 keyup f2 61 34 add 34 gt 自定义全局
  • android Studio keytool' 不是内部或外部命令,也不是可运行的程序 或批处理文件

    android Studio keytool 39 不是内部或外部命令 xff0c 也不是可运行的程序 或批处理文件 遇到这个问题好久了 xff0c 一直没解决今天搜集了大量的资料 xff0c 有的说什么Java没配置好 xff0c 不是扯
  • java -jar 运行springboot项目时内存设置

    java Xms64m JVM启动时的初始堆大小 Xmx128m 最大堆大小 Xmn64m 年轻代的大小 xff0c 其余的空间是老年代 XX MaxMetaspaceSize 61 128m XX CompressedClassSpace
  • Jupyter notebook 读取文件的问题

    Jupyter notebook只能打开当前目录下的数据集 xff08 txt CSV等 xff09 xff0c 所以需要把数据集倒导入到当前目录下 xff0c 导入的方法是 1 文件不大时 直接上传文件 pd read csv读取 2 文
  • MIUI目前为止最简单安装谷歌服务框架教程

    安装谷歌服务框架方法有很多 xff0c 比如用第三方 rec卡刷gapps包 用第三方工具安装 然而这些对于新手来说还是比较难的 xff01 我今天说的方法可以说是最简单的 xff1a 1 不需要修改文件 xff1b 2 不需要借助第三方软
  • ubuntu 下通过ftp命令下载文件

    连接 ftp 192 168 180 2 Connected to 192 168 180 2 Name 192 168 180 2 rivsidn admin Password 获取远端文件 ftp gt get test pdf loc
  • MFC与.NET混合编程

    1 xff1a VS2008 建立 MFC程序 xff1b 2 xff1a Alt 43 F7 设置 xff1a 公共语言运行库支持 xff08 选择 xff09 公共语言运行库支持 clr xff1b 3 xff1a 添加 Net相应库
  • pycharm安装到32位操作系统

    在32位操作系统中安装pycharm过程中发现的一些问题 首先是下载了最新版本的pycharm安装后打开 xff0c 弹出未发现可执行的文件 xff0c 然后想到了其他的办法 1 下载最新版本的pycharm不能直接运行 xff0c 因此可
  • Mybatis入门---一对多、多对多

    前几天自己配置了Mybatis的高级查询 xff1a 一对多和多对多 xff0c 现在记录一下 xff0c 方便以后用到的时候再回顾 xff0c 下面是具体的操作步骤 一 首先就是配置Mybatis的xml文件及mapper的xml文件 x
  • python提交带中文post请求_Python批量发送post请求的实现代码

    Python批量发送post请求的实现代码 来源 xff1a 中文源码网 浏览 xff1a 次 日期 xff1a 2018年9月2日 下载文档 Python批量发送post请求的实现代码 txt 友情提示 右键点上行txt文档名 gt 目标
  • android butterknife 自定义view,android框架之ButterKnife注解式框架

    ButterKnife注解式框架简介 所谓注解式顾名思义就是利用注解的方式将代码抽象化 xff0c 每次使用只需要传递key和value值就行了 xff0c ButterKnife框架将View定义和点击事件很好的进行了注解式抽象 xff0