簡體   English   中英

Kotlin中數據綁定的好處?

[英]Benefits of Databinding in kotlin?

我想知道在開發Android應用程序時編寫額外的代碼以在Kotlin中實現dataBinding的好處。 因為Kotlin擴展已經允許我們直接訪問視圖,而不需要findViewById。

我在這里找到了答案:

嘿! Google的Android開發者倡導者!

我想在這里添加一些背景。 從未有意“推薦”具有綜合視圖的Kotlin擴展,但不應將其作為不使用它們的建議。 如果它們正在為您工作,請隨時在您的應用中繼續使用它們!

我們一直在遠離它們(例如,我們不在Udacity課程中教他們),因為它們公開了ID的全局名稱空間,該名稱空間與實際上沒有誇大無效查找的布局無關的ID,僅是Kotlin,並且不當視圖僅在某些配置中存在時,不會公開可空性。 這些問題共同導致API增加Android應用程序的崩潰次數。

另一方面,它們確實提供了輕量級的API,可以幫助簡化視圖查找。 在此空間中,還值得一看的是Data Binding,它也執行自動視圖查找-並與LiveData集成以在數據更改時自動更新視圖。

如今,在這個領域中有一些可行的選擇:

  • 推薦使用數據綁定進行視圖查找和綁定,但是與Android Kotlin Extensions相比,它確實增加了一些開銷。 值得一看,看看這是否適合您的應用程序。 數據綁定還允許您觀察LiveData在數據更改時自動綁定視圖。 與Kotlin擴展相比,它增加了視圖查找和類型安全性的編譯時檢查。
  • 官方不建議您使用Android Kotlin擴展程序 (這與針對它的建議不同)。 它確實帶有上述問題,因此對於我們的代碼,我們不使用它們。
  • Butter Knife是另一種非常流行的解決方案,適用於Kotlin和Java編程語言。

在這里閱讀注釋,有很多開發人員對Kotlin Extensions感到很幸運。 太好了-在尋找繼續改進API的方式時,我們會牢記一些事情。 如果您還沒有看過數據綁定,那么一定要嘗試一下。

順便說一句,我們的內部代碼樣式指南不能直接在我們的代碼庫之外應用。 例如,我們使用mPrefixVariables,但是沒有理由每個應用程序都應該遵循這種風格。

為了明確起見,直接訪問視圖和dataBinding是不同的。 在Kotlin之前,我們曾經有一個名為butterknife的庫,它確實有助於直接訪問視圖。

所以回到dataBinding ,它的確切作用是直接將值設置為視圖/在xml內獲取事件觸發器(雙向綁定),而不是在activity / fragment類中顯式地進行操作。

有什么好處:假設您在版面xml中有20個Textview,則需要將值設置為響應對象中的那些Textview(具有20個對應字段)。

1)沒有數據綁定,您需要訪問每個視圖並從對象設置值(所以有20行代碼)。

2)使用數據綁定,您只需將對象綁定到xml(一個襯里),您的Xml將使用xml內的綁定代碼填充各個字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM