Optimize the way to get view model

This commit is contained in:
Super12138 2024-04-20 16:09:54 +08:00
parent 9b8a5e062f
commit d0365c3e67
5 changed files with 17 additions and 15 deletions

View file

@ -71,6 +71,8 @@ dependencies {
// AndroidX // AndroidX
implementation(libs.androidx.core.ktx) implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat) implementation(libs.androidx.appcompat)
implementation(libs.androidx.activity)
implementation(libs.androidx.activity.ktx)
implementation(libs.androidx.constraintlayout) implementation(libs.androidx.constraintlayout)
implementation(libs.androidx.fragment) implementation(libs.androidx.fragment)
implementation(libs.androidx.fragment.ktx) implementation(libs.androidx.fragment.ktx)

View file

@ -3,8 +3,8 @@ package cn.super12138.todo.views.all
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.view.WindowManager import android.view.WindowManager
import androidx.activity.viewModels
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import cn.super12138.todo.ToDoApp import cn.super12138.todo.ToDoApp
import cn.super12138.todo.constant.GlobalValues import cn.super12138.todo.constant.GlobalValues
@ -13,6 +13,7 @@ import cn.super12138.todo.views.BaseActivity
import me.zhanghai.android.fastscroll.FastScrollerBuilder import me.zhanghai.android.fastscroll.FastScrollerBuilder
class AllTasksActivity : BaseActivity() { class AllTasksActivity : BaseActivity() {
private val viewModel by viewModels<AllTasksViewModel>()
private lateinit var binding: ActivityAllTasksBinding private lateinit var binding: ActivityAllTasksBinding
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -29,8 +30,6 @@ class AllTasksActivity : BaseActivity() {
binding = ActivityAllTasksBinding.inflate(layoutInflater) binding = ActivityAllTasksBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
val viewModel = ViewModelProvider(this)[AllTasksViewModel::class.java]
val layoutManager = LinearLayoutManager(ToDoApp.context) val layoutManager = LinearLayoutManager(ToDoApp.context)
binding.allTasksList.layoutManager = layoutManager binding.allTasksList.layoutManager = layoutManager
val adapter = AllTasksAdapter(viewModel.todoListAll, supportFragmentManager) val adapter = AllTasksAdapter(viewModel.todoListAll, supportFragmentManager)

View file

@ -5,6 +5,7 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import cn.super12138.todo.R import cn.super12138.todo.R
@ -12,7 +13,7 @@ import cn.super12138.todo.databinding.FragmentProgressBinding
class ProgressFragment : Fragment() { class ProgressFragment : Fragment() {
private lateinit var viewModel: ProgressFragmentViewModel private val viewModel by viewModels<ProgressFragmentViewModel>()
private lateinit var binding: FragmentProgressBinding private lateinit var binding: FragmentProgressBinding
override fun onCreateView( override fun onCreateView(
@ -27,7 +28,6 @@ class ProgressFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
viewModel = ViewModelProvider(requireActivity())[ProgressFragmentViewModel::class.java]
viewModel.progress.observe(viewLifecycleOwner, Observer { value -> viewModel.progress.observe(viewLifecycleOwner, Observer { value ->
binding.progressBar.setProgressCompat(value, true) binding.progressBar.setProgressCompat(value, true)

View file

@ -6,6 +6,7 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
@ -28,7 +29,8 @@ import me.zhanghai.android.fastscroll.FastScrollerBuilder
import java.util.UUID import java.util.UUID
class ToDoFragment : Fragment() { class ToDoFragment : Fragment() {
private val progressViewModel by viewModels<ProgressFragmentViewModel>()
private val todoViewModel by viewModels<ToDoFragmentViewModel>()
private lateinit var binding: FragmentTodoBinding private lateinit var binding: FragmentTodoBinding
private lateinit var toDoDialogBinding: DialogAddTodoBinding private lateinit var toDoDialogBinding: DialogAddTodoBinding
@ -54,11 +56,6 @@ class ToDoFragment : Fragment() {
WindowInsetsCompat.CONSUMED WindowInsetsCompat.CONSUMED
}*/ }*/
val progressViewModel =
ViewModelProvider(requireActivity())[ProgressFragmentViewModel::class.java]
val todoViewModel =
ViewModelProvider(requireActivity())[ToDoFragmentViewModel::class.java]
val todoList = todoViewModel.todoList val todoList = todoViewModel.todoList
val layoutManager = LinearLayoutManager(ToDoApp.context) val layoutManager = LinearLayoutManager(ToDoApp.context)

View file

@ -1,7 +1,9 @@
[versions] [versions]
appcompat = "1.6.1"
constraintlayout = "2.1.4"
coreKtx = "1.13.0" coreKtx = "1.13.0"
appcompat = "1.6.1"
activity = "1.8.2"
activityKtx = "1.8.2"
constraintlayout = "2.1.4"
preference = "1.2.1" preference = "1.2.1"
preferenceKtx = "1.2.1" preferenceKtx = "1.2.1"
lifecycleViewmodelKtx = "2.7.0" lifecycleViewmodelKtx = "2.7.0"
@ -24,9 +26,11 @@ kotlin-android = "1.9.23"
ksp = "1.9.23-1.0.20" ksp = "1.9.23-1.0.20"
[libraries] [libraries]
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" }
androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "coreKtx" } androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "coreKtx" }
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "activity" }
androidx-activity-ktx = { group = "androidx.activity", name = "activity", version.ref = "activityKtx" }
androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" }
androidx-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espressoCore" } androidx-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espressoCore" }
androidx-junit = { module = "androidx.test.ext:junit", version.ref = "junitVersion" } androidx-junit = { module = "androidx.test.ext:junit", version.ref = "junitVersion" }
androidx-preference-ktx = { module = "androidx.preference:preference-ktx", version.ref = "preferenceKtx" } androidx-preference-ktx = { module = "androidx.preference:preference-ktx", version.ref = "preferenceKtx" }