findViewById
舉例 :
val btn: Button= findViewById(R.id.my_button_1)
視圖綁定 view binding
是一種單向綁定,可以將 view 綁定到程式碼。
啟用
開啟應用程式的 build.gradle 檔案,在 android 部分中,新增以下行:
buildFeatures {
viewBinding = true
}
使用
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
}
binding.myButton1.text = "A button"
數據綁定 data binding (數據與 view 雙向綁定)
啟用
在
build.gradle(Module)
檔案中,啟用 buildFeatures
區段下的 dataBinding
屬性。buildFeatures { dataBinding = true }
如要在任何 Kotlin 專案中使用資料繫結,請套用
kotlin-kapt
外掛程式。此步驟已在 build.gradle(Module)
檔案中完成。plugins { id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' }
將版面配置檔案轉成 data binding 版面配置
在目標 layout 檔的根元素上按一下滑鼠右鍵,然後選取「Show Context Actions」>「Convert to data binding layout」
使用
在 UI controller 中使用
class ScannerSimpleResultFragment : Fragment() {
private lateinit var binding: FragmentScannerSimpleResultBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
binding = DataBindingUtil.inflate(inflater,
R.layout.fragment_scanner_simple_result, container, false)
return binding.root
}
}
binding.textViewUnscrambledWord.text = viewModel.currentScrambledWord
在 layout file 中使用
<data>
<variable
name="gameViewModel"
type="com.example.android.unscramble.ui.game.GameViewModel" />
<variable
name="maxNoOfWords"
type="int" />
</data>
android:text="@{gameViewModel.currentScrambledWord}"
也可以調用 viewModel 中的函式 :
<RadioButton
android:id="@+id/vanilla"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/vanilla"
android:checked="@{viewModel.flavor.equals(@string/vanilla)}"
android:onClick="@{() -> viewModel.setFlavor(@string/vanilla)}"/>
(使用無參數 lambda 呼叫 viewModel 內的 setFlavor 函式)
(上面的 setFlavor() 在 viewModel 中長這樣)
fun setFlavor(desiredFlavor: String) {
_flavor.value = desiredFlavor
}
參考資料
- 計算小費 | Android Developers 👉 view binding
0 comments:
張貼留言