国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Jetpack】DataBinding 架構(gòu)組件 ② ( 字符串拼接函數(shù) | 綁定點擊事件函數(shù) | DataBinding 布局中使用 import 標簽導入 Java、Kotlin 類 )

這篇具有很好參考價值的文章主要介紹了【Jetpack】DataBinding 架構(gòu)組件 ② ( 字符串拼接函數(shù) | 綁定點擊事件函數(shù) | DataBinding 布局中使用 import 標簽導入 Java、Kotlin 類 )。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。





一、字符串拼接函數(shù)



在上一篇博客中 , 遇到 在 DataBinding 布局 中 , 向 TextView 組件設置 int 類型數(shù)據(jù)的情況會報錯 , 最終的處理方式是 將 int 類型的變量 student.age 通過 String.valueOf 函數(shù)轉(zhuǎn)為 字符串 類型 , 設置到 TextView 組件中 ;

        <TextView
            android:id="@+id/textView"
            android:text="@{String.valueOf(student.age)}" />

此外 , 還可以 在 數(shù)據(jù)類 中定義 字符串拼接函數(shù) , 直接在 DataBinding 布局文件中 , 調(diào)用字符串拼接函數(shù) ;

class Student(var name: String, var age: Int) {
    fun nameText(): String {
        return "姓名 : ${name}"
    }

    fun ageText(): String {
        return "年齡 : ${age}"
    }
}

在 DataBinding 布局文件中 , 聲明 kim.hsl.databinding_demo.Student 類型的 對象 student ;

    <data>
        <variable
            name="student"
            type="kim.hsl.databinding_demo.Student" />
    </data>

布局文件中的組件中 ,

  • 調(diào)用 @{student.nameText()} 設置 "姓名 : ${name}" 字符串內(nèi)容 ;
  • 調(diào)用 @{student.ageText()} 設置 "年齡 : ${age}" 字符串內(nèi)容 ;

布局文件代碼示例 :

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <variable
            name="student"
            type="kim.hsl.databinding_demo.Student" />
    </data>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:text="Tom"
            android:text="@{student.nameText()}"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.4" />

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:text="18"
            android:text="@{student.ageText()}"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.498"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView2"
            app:layout_constraintVertical_bias="0.2" />

    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>




二、綁定點擊事件函數(shù)



在 DataBinding 布局中 , 如果想要為 View 組件綁定點擊事件 , 需要綁定參數(shù)為 View 類型 , 返回值 void 的函數(shù)即可 ;

在 Student 類中定義如下函數(shù) :

    fun onClick(view: View): Unit {
        Log.i("", "${nameText()} ${ageText()} 觸發(fā)點擊事件")
    }

完整代碼如下 :

package kim.hsl.databinding_demo

import android.util.Log
import android.view.View

class Student(var name: String, var age: Int) {
    fun nameText(): String {
        return "姓名 : ${name}"
    }

    fun ageText(): String {
        return "年齡 : ${age}"
    }

    fun onClick(view: View): Unit {
        Log.i("", "${nameText()} ${ageText()} 觸發(fā)點擊事件")
    }
}

在 DataBinding 中 View 組件的 android:onClick 屬性中 設置 @{student.onClick} 點擊函數(shù) ;

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:text="Tom"
            android:text="@{student.nameText()}"
            android:onClick="@{student.onClick}"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.4" />

點擊該組件后 , 會自動觸發(fā)事件 ;

【Jetpack】DataBinding 架構(gòu)組件 ② ( 字符串拼接函數(shù) | 綁定點擊事件函數(shù) | DataBinding 布局中使用 import 標簽導入 Java、Kotlin 類 )





三、DataBinding 布局中使用 import 標簽導入 Java、Kotlin 類



除了將 字符串拼接 函數(shù)定義在 傳入的 Student 對象中之外 , 還可以 定義在任意類的 靜態(tài)方法 中 ;

注意 : 只能在 DataBinding 布局中調(diào)用靜態(tài)方法 ;

    <data>
        <variable
            name="student"
            type="kim.hsl.databinding_demo.Student" />
    </data>

1、DataBinding 布局中使用 import 標簽導入 Java 類


首先 , 定義一個 Java 類 , 在其中定義靜態(tài)方法 , 接收一個值 , 拼接字符串 ;

package kim.hsl.databinding_demo;

public class JavaStudentUtils {
    public static String nameText(String name) {
        return "姓名 : " + name;
    }
    public static String ageText(int age) {
        return "年齡 : " + age;
    }
}

然后 ,<data> 標簽中 , 導入相應的類 , 如下面的 kim.hsl.databinding_demo.JavaStudentUtils 類 ;

    <data>
        <variable
            name="student"
            type="kim.hsl.databinding_demo.Student" />
        <import type="kim.hsl.databinding_demo.JavaStudentUtils" />
    </data>

最后 , 在 DataBinding 布局的 View 組件中 的 android:text 屬性 , 設置 @{JavaStudentUtils.nameText(student.name)} 屬性值 , 通過調(diào)用 JavaStudentUtils.nameText 靜態(tài)方法 , 設置最終顯示hi的文本 ;

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:text="Tom"
            android:text="@{JavaStudentUtils.nameText(student.name)}"
            android:onClick="@{student.onClick}"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.4" />

2、DataBinding 布局中使用 import 標簽導入 Kotlin 類


首先 , 定義一個 Kotlin 類 , 在其中的 companion object 伴生對象 定義 Java 靜態(tài)方法 , 接收一個值 , 拼接字符串 ;

  • 在 Kotlin 中定義 Java 靜態(tài)方法 : 需要在 companion object 伴生對象 中使用 @JvmStatic 注解修飾函數(shù) ;
  • 在 Kotlin 中定義 Java 靜態(tài)成員 : 需要在 companion object 伴生對象 中使用 @JvmField 注解修飾字段 ;
  • 特別注意 : 只有在 companion object 伴生對象 中 , 才能使用 @JvmStatic 和 @JvmField 注解 ;
package kim.hsl.databinding_demo

class KotlinStudentUtils {
    companion object {
        @JvmStatic
        fun nameText(name: String): String {
            return "姓名 : " + name
        }

        @JvmStatic
        fun ageText(age: Int): String {
            return "年齡 : " + age
        }
    }
}

然后 ,<data> 標簽中 , 導入相應的類 , 如下面的 kim.hsl.databinding_demo.JavaStudentUtils 類 ;

    <data>
        <variable
            name="student"
            type="kim.hsl.databinding_demo.Student" />
        <import type="kim.hsl.databinding_demo.KotlinStudentUtils" />
    </data>

最后 , 在 DataBinding 布局的 View 組件中 的 android:text 屬性 , 設置 @{KotlinStudentUtils.nameText(student.name)} 屬性值 , 通過調(diào)用 KotlinStudentUtils.nameText 靜態(tài)方法 , 設置最終顯示hi的文本 ;

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:text="18"
            android:text="@{KotlinStudentUtils.ageText(student.age)}"
            android:onClick="@{student.onClick}"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.498"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView2"
            app:layout_constraintVertical_bias="0.2" />




四、完整代碼示例




1、數(shù)據(jù)類


在該數(shù)據(jù)類中 , 定義了字符串拼接函數(shù) , 點擊事件函數(shù) ;

該數(shù)據(jù)類對象需要在 DataBinding 布局文件中 , 需要通過如下方式導入 ;

    <data>
        <variable
            name="student"
            type="kim.hsl.databinding_demo.Student" />
    </data>

代碼示例 :

package kim.hsl.databinding_demo

import android.util.Log
import android.view.View

class Student(var name: String, var age: Int) {
    fun nameText(): String {
        return "姓名 : ${name}"
    }

    fun ageText(): String {
        return "年齡 : ${age}"
    }

    fun onClick(view: View): Unit {
        Log.i("", "${nameText()} ${ageText()} 觸發(fā)點擊事件")
    }
}

2、導入的 Java 類


在 Java 類中 , 可以直接定義 靜態(tài)方法 , 在 DataBinding 布局中調(diào)用 ;

package kim.hsl.databinding_demo;

public class JavaStudentUtils {
    public static String nameText(String name) {
        return "姓名 : " + name;
    }
    public static String ageText(int age) {
        return "年齡 : " + age;
    }
}

3、導入的 Kotlin 類


在 Kotlin 類中 , 需要在 companion object 伴生對象 中使用 @JvmStatic 注解修飾函數(shù) , 才能定義 Java 靜態(tài)函數(shù) ;

package kim.hsl.databinding_demo

class KotlinStudentUtils {
    companion object {
        @JvmStatic
        fun nameText(name: String): String {
            return "姓名 : " + name
        }

        @JvmStatic
        fun ageText(age: Int): String {
            return "年齡 : " + age
        }
    }
}

4、DataBinding 布局文件


在布局文件中 , 導入 Student 對象 , 和 定義了靜態(tài)函數(shù)的類 ;

綁定點擊事件 :

android:onClick="@{student.onClick}"

拼接字符串 :

android:text="@{JavaStudentUtils.nameText(student.name)}"

代碼示例 :文章來源地址http://www.zghlxwxcb.cn/news/detail-401777.html

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <variable
            name="student"
            type="kim.hsl.databinding_demo.Student" />
        <import type="kim.hsl.databinding_demo.JavaStudentUtils" />
        <import type="kim.hsl.databinding_demo.KotlinStudentUtils" />
    </data>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:text="Tom"
            android:text="@{JavaStudentUtils.nameText(student.name)}"
            android:onClick="@{student.onClick}"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.4" />

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            tools:text="18"
            android:text="@{KotlinStudentUtils.ageText(student.age)}"
            android:onClick="@{student.onClick}"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.498"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView2"
            app:layout_constraintVertical_bias="0.2" />

    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

5、Activity 組件類


package kim.hsl.databinding_demo

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.databinding.DataBindingUtil
import kim.hsl.databinding_demo.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // 設置布局文件
        // 布局文件是 activity_main.xml
        // 該類名稱生成規(guī)則是 布局文件名稱 + Binding
        var activityMainBinding: ActivityMainBinding =
            DataBindingUtil.setContentView(this, R.layout.activity_main)

        // 為布局 設置 數(shù)據(jù)
        activityMainBinding.student = Student("Jerry", 13)
    }
}

到了這里,關于【Jetpack】DataBinding 架構(gòu)組件 ② ( 字符串拼接函數(shù) | 綁定點擊事件函數(shù) | DataBinding 布局中使用 import 標簽導入 Java、Kotlin 類 )的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【Jetpack】DataBinding 架構(gòu)組件 ⑤ ( 數(shù)據(jù)模型與視圖雙向綁定 | BaseObservable 實現(xiàn)雙向綁定 | ObservableField 實現(xiàn)雙向綁定 )

    【Jetpack】DataBinding 架構(gòu)組件 ⑤ ( 數(shù)據(jù)模型與視圖雙向綁定 | BaseObservable 實現(xiàn)雙向綁定 | ObservableField 實現(xiàn)雙向綁定 )

    在之前的博客中 , 將 數(shù)據(jù)模型 Model 中的 指定 Field 字段 綁定到 View 視圖中的組件 , 在實際案例中 , 將 Student 類中的 String 類型的 name 字段綁定到了 布局文件中的 TextView 組件中 , 當 Student#name 字段發(fā)生了改變 , 對應的 TextView 組件中顯示的內(nèi)容也發(fā)生了相應的修改 ; 上述綁定方

    2023年04月21日
    瀏覽(26)
  • mysql 拼接字符串,截取字符串 常用方式

    1,拼接字符串常用:CONCAT(‘需要拼接的字符串’,列名) CONCAT(\\\'+\\\',b.Telephone)查詢出號碼,前邊加上+號 2,分割字符串 substring_index(b.Telephone,\\\'+\\\',1) 用從左往右的第一個+分割電話號碼,獲取分割后的從左往右的第一個字符串 比如 86+133333333 執(zhí)行完后 為 86 substring_index(b.Telephone,\\\'+\\\',

    2024年02月14日
    瀏覽(31)
  • Python_字符串(字符串拼接:join() 與 +拼接符兩種方法效率對比)

    Python_字符串(字符串拼接:join() 與 +拼接符兩種方法效率對比)

    運算結(jié)果如下圖所示: 顯然,在循環(huán)1000000次的前提下,字符的join()運算效率遠遠高于使用+拼接符的運算。 其根本邏輯在于: 對于簡單的+運算符,字符串每次相加都會創(chuàng)建一個新的對象。較為費時。 而對于join(),其用于列表內(nèi)字符串的相加,列表中字符串的相加并不會創(chuàng)建

    2023年04月24日
    瀏覽(22)
  • shell 拼接字符串,出現(xiàn)后面的字符串覆蓋前面的字符串問題

    shell 拼接字符串,出現(xiàn)后面的字符串覆蓋前面的字符串問題

    shell 拼接字符串語法很簡單兩個參數(shù)并排前后寫上接口,如下 str1=www str2=bbb s t r 1 str1 s t r 1 str2 的結(jié)果未 wwwbbb 有時會出現(xiàn)如下問題: 在拼接字符串的時候,后面的字符串將前面的字符串覆蓋了。 shell的內(nèi)容如下: #!/bin/bash date_str=“ date +%Y%m%d ” echo $date_str python_file_name=\\\" 1

    2024年02月09日
    瀏覽(26)
  • JS中字符串切割為數(shù)組/數(shù)組拼接為字符串

    (1)語法格式: 其中所選分隔符使用雙引號(“”)或者單引號(‘’)括起來; 所生成的數(shù)組會存放于前面定義的數(shù)組變量中。 (2)樣例: JS代碼: 運行結(jié)果: (3)其他用法: ①當所選分隔符為空時,返回的數(shù)組即將每個字符分割出來: JS代碼: 運行結(jié)果: ②分隔

    2024年02月12日
    瀏覽(32)
  • C++ 字符串拼接

    C++ 字符串拼接

    第一種方法直接是字符串之間相加 第二種方法使用append append 可以設置參數(shù)? 例如 append(“s1”,3) 這就是把s1前三位拼接 例如下面的就是把adbc的前2位,也就是ab 拼接到s1 上面 打印結(jié)果? ?append(s1,2,4)設置2個參數(shù),就是從第2位開始后面的四位拼接 下面的就是abcdefg從第

    2024年02月16日
    瀏覽(23)
  • SQL字符串拼接

    ①CONCAT() 拼接字符串基本型: SELECT CONCAT ( lastname , firstname) AS student_name FROM kalacloud_student; ②使用空格拼接字符串: 仍然使用 SELECT CONCAT() 命令,空格需要使用\\\' \\\' 兩個單引號引起來。SELECT CONCAT(firstname, \\\' \\\', subject) AS studentDetail FROM kalacloud_student; ③使用特殊符號拼接字符串: S

    2024年02月17日
    瀏覽(24)
  • Java中字符串占位替換、字符串拼接、字符串與Collection互轉(zhuǎn)的方式

    1、String.format 最原始最基礎的方式。 使用%來表示占位,后面跟上不同的標識符,用于限定這個占位符的參數(shù)類型,由jdk原生提供支持。 示例: 2、MessageFormat 如果遇到一個參數(shù)需要替換模板中多個占位的場景,更友好的方式是MessageFormat,由jdk原生提供支持。 示例: 舉例:將

    2024年02月16日
    瀏覽(31)
  • 【C#】字符串拼接相關

    【C#】字符串拼接相關

    目錄 1.字符串拼接方式1 用+號進行字符串拼接 復合運算符 += 2.字符串拼接方式2 3.控制臺打印拼 4.例子? 之前的算數(shù)運算符 只是用來數(shù)值類型變量進行數(shù)學運算的 而 string 不存在算數(shù)運算符 不能計算 但是可以通過+號來進行字符串拼接 用+號進行字符串拼接 復合運算符 += 按數(shù)

    2024年02月04日
    瀏覽(24)
  • Java拼接list字符串

    Java拼接list字符串

    使用Stream方法將列表轉(zhuǎn)換為一個流。在流中,使用Collectors.joining方法將所有元素連接成一個字符串。這個方法可以接受一個字符串參數(shù),該參數(shù)用作分隔符。 在調(diào)用釘釘?shù)囊粋€消息發(fā)送API時遇到了一個這樣的問題,當時我是這么寫的總覺得沒問題,但是一直報錯,說我userI

    2024年02月16日
    瀏覽(52)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包