用视图绑定替代findViewById

android {

viewBinding {

enabled = true

}

}

Android Gradle Plugin 4.0+

android{

…buildFeatures{

viewBinding = true

}

}

activity_main.xml

//activity_main.xml

ActivityMainBinding类

//generates AndroidMainBinding

class ActivityMainBinding{

val greeting: TextView

}

onCreate方法

override fun onCreate(savedInstanceState: Bundle?){

val binding = ActivityMainBinding.inflate(layoutInflater)

setContentView(binding.root)

如果希望在生成绑定类时忽略某个布局文件,请将 tools:viewBindingIgnore=“true” 属性添加到相应布局文件的根视图中:

<LinearLayout

tools:viewBindingIgnore=“true” >

为某个模块启用视图绑定功能后,系统会为该模块中包含的每个 XML 布局文件生成一个绑定类。每个绑定类均包含对根视图以及具有 ID 的所有视图的引用。系统会通过以下方式生成绑定类的名称:将 XML 文件的名称转换为驼峰式大小写,并在末尾添加“Binding”一词。

例如,假设某个布局文件的名称为 result_profile.xml:

<LinearLayout … >

<Button android:id=“@+id/button”

android:background=“@drawable/rounded_button” />

所生成的绑定类的名称就为 ResultProfileBinding。此类具有两个字段:一个是名为 name 的 TextView,另一个是名为 button 的 Button。该布局中的 ImageView 没有 ID,因此绑定类中不存在对它的引用。

每个绑定类还包含一个 getRoot() 方法,用于为相应布局文件的根视图提供直接引用。在此示例中,ResultProfileBinding 类中的 getRoot() 方法会返回 LinearLayout 根视图。

以下几个部分介绍了生成的绑定类在 Activity 和 Fragment 中的使用。

1. 在 Activity 中使用视图绑定

设置绑定类的实例以供 Activity 使用,需在 Activity 的 onCreate() 方法中执行以下步骤:

  1. 调用生成的绑定类中包含的静态 inflate() 方法。此操作会创建该绑定类的实例以供 Activity 使用。

  2. 通过调用 getRoot() 方法或使用 Kotlin 属性语法获取对根视图的引用。

  3. 将根视图传递到 setContentView(),使其成为屏幕上的活动视图。

private ResultProfileBinding binding;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

binding = ResultProfileBinding.inflate(getLayoutInflater());

View view = binding.getRoot();

setContentView(view);

}

现在即可使用该绑定类的实例来引用任何视图:

binding.getName().setText(viewModel.getName());

binding.button.setOnClickListener(new View.OnClickListener() {

viewModel.userClicked()

});

2. 在 Fragment 中使用视图绑定

设置绑定类的实例以供 Fragment 使用,需在 Fragment 的 onCreateView() 方法中执行以下步骤:

  1. 调用生成的绑定类中包含的静态 inflate() 方法。此操作会创建该绑定类的实例以供 Fragment 使用。

  2. 通过调用 getRoot() 方法或使用 Kotlin 属性语法获取对根视图的引用。

  3. 从 onCreateView() 方法返回根视图,使其成为屏幕上的活动视图。

注意:inflate() 方法会要求你传入布局膨胀器。如果布局已膨胀,可以调用绑定类的静态 bind() 方法。

private ResultProfileBinding binding;

@Override

public View onCreateView (LayoutInflater inflater,

ViewGroup container,

Bundle savedInstanceState) {

学习分享

在当下这个信息共享的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了

很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘

如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。

2021最新上万页的大厂面试真题

image

七大模块学习资料:如NDK模块开发、Android框架体系架构…

image

2021大厂面试真题:

image

只有系统,有方向的学习,才能在短时间内迅速提高自己的技术,只有不断地学习,不懈的努力才能拥有更好的技术,才能在互联网行业中立于不败之地。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
架体系架构…**

[外链图片转存中…(img-qQ5x6TGa-1715343737078)]

2021大厂面试真题:

[外链图片转存中…(img-21dcJtQI-1715343737079)]

只有系统,有方向的学习,才能在短时间内迅速提高自己的技术,只有不断地学习,不懈的努力才能拥有更好的技术,才能在互联网行业中立于不败之地。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Kotlin 中,你可以使用 Android Jetpack 的 View Binding 功能来进行视图绑定。下面是使用视图绑定的步骤: 1. 确保你的项目已经启用了视图绑定。在项目的 build.gradle 文件中,确保以下行被添加: ``` android { ... viewBinding { enabled = true } } ``` 2. break; } } if (win) { return true; } } } // 检查纵 在 XML 布局文件中定义视图。例如,如果你有一个名为 `activity_main.xml` 的布局文件,其中包含一个 `TextView`,可以这样定义: ```xml <TextView android:id="@+id/myTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" /> ``` 3. 构建项目以生成视图绑定类。在项目构建后,系统会为每个布局文件生成一个绑定类。对于 `activity_main.xml`,会生成一个名为 `ActivityMainBinding` 的绑定类。 4. 在代码中使用视图绑定。在你的活动或片段中,使用 `ActivityMainBinding.inflate()` 方法来获取绑定对象,并使用该对象访问布局中的视图。例如: ```kotlin import com.example.myapp.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) val view = binding.root setContentView(view) // 使用绑定对象访问视图 binding.myTextView.text = "Hello Kotlin!" } } ``` 这样,你就可以使用视图绑定来访问布局文件中的视图,而无需手动使用 `findViewById` 方法进行查找和类型转换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值