IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 视图绑定【android jetpack】 -> 正文阅读

[移动开发]视图绑定【android jetpack】

视图绑定

视图绑定 是通过对xml属性转化为对应的绑定类 会对xml布局中所有的具有id属性的组件创建直接的引用

视图绑定 与 传统的findviewbyid

视图绑定: 是对id属性组件的直接引用 相当于只要组件只要有了id属性 就相当于 有了这个组件的实例对象 而且这种绑定规则贯穿于整个模块 不会出现空指针异常 和 类型的转化的情况 类型安全

findViewByid :是通过id获取组件 这种容易出现空指针异常 (经常遇到)会导致 程序崩溃 还需要 类型强制转化 有时用的不好 就会出错

视图绑定 与 数据绑定

视图绑定和数据绑定均会生成可用于直接引用视图的绑定类。但是,视图绑定旨在处理更简单的用例

视图绑定 : 视图绑定 不需要编译xml文件的注释? 会更快的编译文件 视图绑定不需要特别标记的 XML 布局文件,因此在应用中采用速度更快。在模块中启用视图绑定后,它会自动应用于该模块的所有布局。

数据绑定 反之。

使用

首先要在模块的build.grandle中 配置

android {
        ...
        viewBinding {
            enabled = true
        }
    }
    

如果在activity 中

  • ?首先以对应布局文件名的驼峰式命名法在后面添加Binding 得到绑定类 在使用这个类 中的
    inflate方法获取绑定类实例 
  • 用这个绑定类实例 通过 getRoot 获取 根元素
  • 为activity设置这个根元素 以活动视图
package com.example.test;

import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;

import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;

import com.example.test.Fragment.Fragment1;
import com.example.test.databinding.ActivityViewBindBinding;

public class ViewBind extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 获取activity 的视图实例
        ActivityViewBindBinding binding = ActivityViewBindBinding.inflate(getLayoutInflater());
        //获取 视图的根实例
        View root = binding.getRoot();
        //将根视图传递到 setContentView(),使其成为屏幕上的活动视图。
        setContentView(root);


        binding.btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                binding.text.setText(String.valueOf(Integer.parseInt(binding.text.getText().toString())+1));
            }
        });





    }
}

如果在Fragment中

  • ?首先以对应布局文件名的驼峰式命名法在后面添加Binding 得到绑定类 在使用这个类 中的
    inflate方法获取绑定类实例 
  • 用这个绑定类实例 通过 getRoot 获取 根元素
  • 返回这个根元素 以绑定视图
package com.example.test.Fragment;

import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import com.example.test.R;
import com.example.test.databinding.Fragment1Binding;

import org.jetbrains.annotations.NotNull;

/*
createName : 程序员keven
createTime : 2022/3/3
*/
public class Fragment1 extends Fragment {

    public Context mcontext ;
    @Override
    public void onAttach(@NonNull @NotNull Context context) {
        super.onAttach(context);
        this.mcontext = context ;
    }

    @Nullable
    @org.jetbrains.annotations.Nullable
    @Override
    public View onCreateView(@NonNull @NotNull LayoutInflater inflater, @Nullable @org.jetbrains.annotations.Nullable ViewGroup container, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
        Fragment1Binding fragment1Binding = Fragment1Binding.inflate(inflater);
        LinearLayout root = fragment1Binding.getRoot();


        return root;
    }
}

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-03-06 13:12:56  更:2022-03-06 13:14:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 16:39:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码