进入Android Jetpack 架构,还是要提一下什麽是MVVM,再来使用ViewModel。
MVVM
View -------- View Model ------- Model
(Activity) (View Model) (DATA --- API , SQL...)
View
负责使用者介面,UI 层显示,avtivity 和 fragment 都是
View Model
负责接受处理 View 的请求和回覆资料
Model
负责管理和更新资料,像是资料库存取,API
如何使用 ViewModel
1.build.gradle (app):
dependencies {
….
//ViewModel
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1'
}
2.建立class 宣告续承 ViewModel():
class Day16ViewModel: ViewModel() {
init{ println("init Day16ViewModel")}
}
3. Activity 呼叫 ViewModel
class Day16Activity : AppCompatActivity() {
private lateinit var viewModel: Day16ViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_day16)
// Create a ViewModel the first time the system calls an activity's onCreate() method.
// Re-created activities receive the same Day16ViewModel instance created by the first activity.
// Use the 'by viewModels()' Kotlin property delegate
// from the activity-ktx artifact
viewModel = ViewModelProvider(this).get(Day16ViewModel::class.java)
….
}
}
4. Fragment呼叫 ViewModel:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// Use the 'by activityViewModels()' Kotlin property delegate
// from the fragment-ktx artifact
val model: Day16ViewModel by activityViewModels()
}
5. 这样就在activity 和 fragmnet 使用viewmodel 了
范例:
在 Activity 的 viewmodel 中设定字串为 “铁人赛主题”,给Activity 和 fragment 的viewmodel 读取字串显示在画面和log
执行结果:
https://developer.android.com/topic/libraries/architecture/viewmodel
<<: [Day6] [笔记] React Component (下)
>>: Day 16:专案03 - PTT 八卦版爬虫01 | cookie
今天来讲讲PyAutoGUI这个套件好了,这个套件可以帮助你写脚本,可以让滑鼠以及键盘自动化,就不用...
游戏简介 我们制作的「山海异闻录」是一款AR手机游戏,一共有五个关卡,完成每个关卡即可开启新的故事剧...
做完Player後先帮来上个简易武器吧,找到Player Bullet 0一样拖曳到场景,看是否需要...
题目 美术馆有n 种票,票价为 p1、p2、p3 直到 pn,所需张数为 x1、x2、x3 直到 x...
哈罗大家好~ 昨天我们初步了解如何制作一个简单的 Power BI 视觉化报表,让我们可以针对想要了...