Android版黄油刀简介

article/2025/10/21 17:39:07

Butter Knife?

黄油刀是一个非常好的Android视图注入库。 黄油刀有助于减少许多样板代码(例如,重复的findViewById调用)。 如果您处理的活动具有大量的视图,那么您就会知道,将代码与“ findViewById”集群在一起时,它很容易变得笨拙。 如果您有此问题,黄油刀是一个不错的库,可以查阅一下,这将是有关如何使用黄油刀的介绍。

即使您不想使用它,也有个好主意,这样,当您的Android朋友谈论黄油刀时,您就不会在考虑面包ðŸ〜。

图片说一千个单词,代码片段说一万个……ðð。 因此,我将举例说明何时使用黄油刀,何时不使用黄油刀,这样做您将很容易看到差异。 了解了此处展示的内容之后,您可以通过学习有关该图书馆的更多信息来进一步了解自己的知识。

只是让您知道,黄油刀不会以任何方式减慢您的应用程序,因为它使用了编译时注释,因此在运行时没有任何额外的成本。

Before Butter knife

我将要使用的UI在下面,它对您有所帮助,以便您可以了解发生了什么。

UI中有一个TextView和两个按钮。 我们将做两件事,有和没有黄油刀,这是在按钮上设置onClick侦听器并编辑文本视图ðŸ〜‹。

The UI

Mountain View

我希望您在XML中注意到的唯一重要的事情是指向视图ID的“ android:id”值。

以下是此视图的XML代码:

  <Buttonandroid:id="@+id/Abtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_alignParentStart="true"android:layout_marginBottom="203dp"android:layout_marginStart="48dp"android:text="Button" /><Buttonandroid:id="@+id/Bbtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentEnd="true"android:layout_alignTop="@+id/Abtn"android:layout_marginEnd="24dp"android:text="Button" /><TextViewandroid:id="@+id/BKtxt"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_marginEnd="28dp"android:layout_marginTop="74dp"android:layout_toStartOf="@+id/Bbtn"android:text="ButterKnife"android:textSize="20sp" />

因此,如果我想为第一个按钮设置一个onClick侦听器,该按钮的ID为“ Abtn”,这就是不用黄油刀时我可以做的事情:

public class MainActivity extends AppCompatActivity {Button firstButton;//Button variableTextView BKtxt;//TextView variable@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);firstButton = (Button) findViewById(R.id.Abtn);//ButtonBKtxt = (TextView) findViewById(R.id.BKtxt);//TextviewfirstButton.setOnClickListener(new View.OnClickListener() {//set onclick listener for Button@Overridepublic void onClick(View view) {BKtxt.setText("It works");}});}}

因此,当单击第一个按钮时,它实际上会将“文本视图”的文本更改为“有效”。 很好,不是吗。 好吧,让我们尝试使用黄油刀🔪。

Using Butter knife

为了使用黄油刀,您将必须添加一些依赖项。 将以下内容添加到app / build.gradle文件

dependencies {//bla bla bla
//.
//.
//.compile 'com.jakewharton:butterknife:8.4.0'annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
}

另外,请确保升级到最新的Gradle版本,以使用注释处理器语法💊。

下面的示例使用黄油刀完成。

public class MainActivity extends AppCompatActivity {@BindView(R.id.BKtxt)TextView BKtxt;//This is all we need for the text view @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ButterKnife.bind(this);//important to add this under super.onCreate and setContentView}@OnClick(R.id.Abtn)public void firstclick(Button button){BKtxt.setText("It works");}}

它可以做的事情还很多,例如,除了为每个按钮创建点击侦听器之外,我还可以这样做:

    @OnClick({R.id.Abtn,R.id.Bbtn})//the two buttons now use the same onClickpublic void firstclick(Button button){BKtxt.setText("It works");}

您还可以对视图进行分组并对其进行分组操作:

// Group the views together@BindViews({ R.id.Abtn,R.id.Bbtn})List<Button> daButtons;

因此,如果您尚未尝试,请尝试一下! 对于其他只想有个主意的人来说,这很好。 您至少知道它的意思和优点。 继续有关它的信息,它确实是一个很好的工具ðŸ’。

from: https://dev.to//lemuelogbunude/intro-to-butter-knife-for-android-views-d4e


http://chatgpt.dhexx.cn/article/IhrKaUyX.shtml

相关文章

Android(ButterKnife)黄油刀使用详解

一、什么是ButterKnife黄油刀&#xff1f; 1.1ButterKnife中文又名黄油刀&#xff0c;是一款Android视图的字段和方法绑定快速注解框架。 1.2使用方法&#xff1a; 1.打开budild.gradle 文件 2.在dependencies 中添加 implementation com.jakewharton:butterknife:10.2.3// …

Android Butterknife(黄油刀) 使用方法总结

转载请标明出处&#xff1a;http://blog.csdn.net/donkor_/article/details/77879630 前言&#xff1a; ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象&#xff0c;有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWha…

ArrayList$SubList.add导致的java.lang.StackOverflowError : null :慎用subList

项目场景&#xff1a; 上线后遇到的1个StackOverflowError问题&#xff0c;这里做个分析。通过日志文件可以看到&#xff1a; java.lang.StackOverflowError: nullat java.util.ArrayList$SubList.add(ArrayList.java:1047)at java.util.ArrayList$SubList.add(ArrayList.jav…

ArrayList和SubList的坑面试题

&#x1f468;&#x1f3fb;‍&#x1f393;博主介绍&#xff1a;大家好&#xff0c;我是芝士味的椒盐&#xff0c;一名在校大学生&#xff0c;热爱分享知识&#xff0c;很高兴在这里认识大家&#x1f31f; &#x1f308;擅长领域&#xff1a;Java、大数据、运维、电子 &#x…

NetSuite Sublist解释

今朝汇编一下Sublist主题的知识点以备忘。 2个数据源类型 Related Record - 以Saved Search建立的关联记录&#xff1b;Child Record - 父子表&#xff1b; 1. Related Record Saved Search关键点 这种形式的Sublist是利用Saved Search作为Sublist的数据源&#xff0c;将某…

各位,请慎用 subList!原来这么多坑!!

点击关注公众号&#xff0c;Java干货及时送达 1. 使用Arrays.asList的注意事项 1.1 可能会踩的坑 先来看下Arrays.asList的使用&#xff1a; List<Integer> statusList Arrays.asList(1, 2); System.out.println(statusList); System.out.println(statusList.contains(1…

Java中List的subList()方法及使用注意事项

List<Object> list new Arraylist<>();List<Object> subList list.subList(0, 5);其中subList(0, 5)取得的是下标为0到4的元素,不包含下标为5的元素. java.util.List中的subList方法返回列表中指定的 fromIndex&#xff08;包括 &#xff09;和 toIndex&a…

Java 中 List.subList() 方法的使用陷阱

转载请注明本文出自 clevergump 的博客&#xff1a;http://blog.csdn.net/clevergump/article/details/51105235, 谢谢! 前言 本文原先发表在我的 iteye博客: http://clevergump.iteye.com/admin/blogs/2211979, 但由于在 iteye发表的这篇文章的某些渲染曾经出现过一些问题, 我…

【Java】List的subList方法

Java的容器类ArrayList很常用&#xff0c;旗下存在一个subList方法&#xff0c;是值得注意的。 subList方法仅能够取出此ArrayList的引用&#xff0c;即使其看起来&#xff0c;好像是取出一个ArrayList的子ArrayList。 其实不然&#xff0c;subList方法的返回值&#xff0c;只是…

Java中的subList方法

Java中的subList方法 今天看到了java中List中有个subList的方法&#xff0c;感觉很熟悉有没有&#xff1f;没错&#xff0c;在Stirng类中&#xff0c;也有个类似的方法&#xff1a;subString。 Stirng中的subString方法&#xff0c;官方解释是&#xff1a;返回字符串的子字符串…

Java中List集合的subList方法

目录 一、说明 二、测试 1、直接输出 2、向subList中添加元素再输出 3、 从subList中删除元素再输出 4、向list中添加元素再输出 5、从list中删除一个元素后再输出 ​ 6、向list中添加元素&#xff0c;输出list&#xff0c;然后将subList传入ArrayList生成新集合在输出…

你真的会用ArrayList的subList方法吗?

导语 在日常的开发中通常会遇到截取List的情况&#xff0c;而大多数会选择使用subList方法进行截取&#xff0c;但是好多人对这个方法的理解都只是停留在使用层面上&#xff1f;这篇文章会非常详细达到源码级别的讲解sublList方法&#xff0c;需要的朋友赶紧收藏起来吧。 关于…

Java SubList 类 Java subList方法 Java ArrayList$SubList 方法特点 SubList 用法

Java SubList 类 Java subList方法 Java ArrayList$SubList 方法特点 SubList 用法 一、概述 在java集合中&#xff0c;常用ArrayList类中&#xff0c;若需要对 list进行截取&#xff0c;可以使用subList方法&#xff0c;进行生成 SubList的内部类&#xff0c;那么 ArrayList 和…

使用ArrayList中的subList方法

集合是Java开发日常开发中经常会使用到的。在之前的一些文章中&#xff0c;我们介绍过一些关于使用集合类应该注意的事项&#xff0c;如《为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作》、《为什么阿里巴巴建议集合初始化时&#xff0c;指定集合容量大小》等…

sublist详解

接口中定义 List<E> subList(int fromIndex, int toIndex);1&#xff0c;该方法返回的是父list的一个视图&#xff0c;从fromIndex&#xff08;包含&#xff09;&#xff0c;到toIndex&#xff08;不包含&#xff09;。fromIndextoIndex 表示子list为空 2&#xff0c;父…

数据建模应用

数据建模应用 一、为什么要数据建模二、数据建模种类1、关系建模&#xff08;3NF&#xff09;2、维度建模 三、3NF数据建模1、范式介绍2、3NF建模实战 四、维度建模1、维度和指标的概念2、星型模型3、雪花模型4、星型与雪花模型对比5、维度建模测试案例 五、3NF建模与维度建模的…

分享大数据建模工具-大数据挖掘建模平台

大数据挖掘建模平台 是面向企业级用户的大数据挖掘建模平台。平台采用可视化操作方式&#xff0c;通过丰富内置算法&#xff0c;帮助用户快速、一站式地进行数据分析及挖掘建模&#xff0c;可应用于处理海量数据、高复杂性的数据挖掘任务&#xff0c;为其提供准确、高精度的计算…

大数据之数据模型

一、星型摸型 事实表是记录一个事实的&#xff0c;可以理解为订单表&#xff0c; 纬度表是提供更丰富信息的表&#xff0c;可以理解为商品明细表、订单明细表&#xff1b; 它是由一个事实表和一组维表组成&#xff0c;每个维表都有一个维作为主键&#xff0c;所有这些维的主键…

数据建模概述

数据建模&#xff08;data modeling&#xff0c;其实应该就是创建一个函数&#xff09;指的是对现实世界各类数据的抽象组织&#xff0c;确定数据库需管辖的范围、数据的组织形式等直至转化成现实的数据库。 将经过系统分析后抽象出来的概念模型转化为物理模型后&#xff0c;在…

大数据时代建模——图数据库建模

导读&#xff1a;云计算环境下&#xff0c;传统关系型数据库在海量数据存储方面存在瓶颈&#xff0c;对树形结构与半结构化数据的建模比较困难。本文介绍一种全新的建模方式——图数据库建模。应用图数据库模型更具扩展性、灵活性、高可靠性和高性能&#xff0c;能建立高细粒度…