內容目錄
View model 的用途
1、將商業邏輯從 Activity 或 Fragment 中獨立出來,避免 view 過大,影響程式可讀性及可維護性。
2、view model 可以在 configuration changes 中存活,可以在畫面切換時保存變數。
依賴的函式庫
dependencies { ... def lifecycle_version = "2.5.1" // LiveData implementaion "android.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version" // LiveData implementaion "android.lifecycle:lifecycle-lifedata-ktx:$lifecycle_version" }
建立 View Model
class MainViewModel : ViewModel() { ... }
在 Activity 或 Fragment 中初始化 View Model
class MainActivity : AppCompatActivity(){ private lateinit var viewModel: MainViewModel override fun onCreate(savedInstanceState: Bundle?) { ... viewModel = ViewModelProvider(this).get(MainViewModel::class.java) } ... }
快速初始化的方法 – viewModels()
依賴
// 只能在 activity 中使用 viewModels() // implementation "androidx.activity:activity-ktx:1.6.1" // activity 與 fragment 都可使用 viewModels() implementation "androidx.fragment:fragment-ktx:1.5.5"
程式代碼
... import androidx.activity.viewModels class MainActivity : AppCompatActivity() { private val viewModel: MainViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { ... } ... }
Comments