Change how ViewModels get created
This commit is contained in:
parent
4342448c1e
commit
5e6099de93
10 changed files with 29 additions and 20 deletions
|
@ -1,7 +1,8 @@
|
|||
plugins {
|
||||
id 'com.android.application'
|
||||
id 'kotlin-android'
|
||||
id 'org.jetbrains.kotlin.kapt'
|
||||
id 'kotlin-parcelize'
|
||||
id 'kotlin-kapt'
|
||||
id 'androidx.navigation.safeargs.kotlin'
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import dev.jdtech.jellyfin.R
|
||||
|
@ -12,13 +13,14 @@ import dev.jdtech.jellyfin.databinding.FragmentAddServerBinding
|
|||
import dev.jdtech.jellyfin.viewmodels.AddServerViewModel
|
||||
|
||||
class AddServerFragment : Fragment() {
|
||||
|
||||
private val viewModel: AddServerViewModel by viewModels()
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View {
|
||||
val binding = FragmentAddServerBinding.inflate(inflater)
|
||||
val viewModel =
|
||||
ViewModelProvider(this).get(AddServerViewModel::class.java)
|
||||
|
||||
binding.lifecycleOwner = this
|
||||
binding.viewModel = viewModel
|
||||
|
|
|
@ -4,7 +4,7 @@ import android.os.Bundle
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
|
||||
import dev.jdtech.jellyfin.databinding.EpisodeBottomSheetBinding
|
||||
|
@ -21,7 +21,7 @@ class EpisodeBottomSheetFragment : BottomSheetDialogFragment() {
|
|||
): View {
|
||||
val binding = EpisodeBottomSheetBinding.inflate(inflater, container, false)
|
||||
val viewModelFactory = EpisodeBottomSheetViewModelFactory(requireNotNull(this.activity).application, args.episodeId)
|
||||
val viewModel = ViewModelProvider(this, viewModelFactory).get(EpisodeBottomSheetViewModel::class.java)
|
||||
val viewModel: EpisodeBottomSheetViewModel by viewModels { viewModelFactory }
|
||||
|
||||
binding.lifecycleOwner = this
|
||||
binding.viewModel = viewModel
|
||||
|
|
|
@ -5,6 +5,7 @@ import android.view.LayoutInflater
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import dev.jdtech.jellyfin.R
|
||||
|
@ -15,13 +16,15 @@ import dev.jdtech.jellyfin.databinding.FragmentHomeBinding
|
|||
import dev.jdtech.jellyfin.viewmodels.HomeViewModel
|
||||
|
||||
class HomeFragment : Fragment() {
|
||||
|
||||
private val viewModel: HomeViewModel by viewModels()
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View {
|
||||
val binding = FragmentHomeBinding.inflate(inflater, container, false)
|
||||
val viewModel = ViewModelProvider(this).get(HomeViewModel::class.java)
|
||||
|
||||
binding.lifecycleOwner = this
|
||||
binding.viewModel = viewModel
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
package dev.jdtech.jellyfin.fragments
|
||||
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import dev.jdtech.jellyfin.viewmodels.LibraryViewModel
|
||||
|
@ -16,7 +16,6 @@ import dev.jdtech.jellyfin.viewmodels.LibraryViewModelFactory
|
|||
class LibraryFragment : Fragment() {
|
||||
|
||||
private lateinit var binding: FragmentLibraryBinding
|
||||
private lateinit var viewModel: LibraryViewModel
|
||||
|
||||
private val args: LibraryFragmentArgs by navArgs()
|
||||
|
||||
|
@ -35,7 +34,7 @@ class LibraryFragment : Fragment() {
|
|||
super.onViewCreated(view, savedInstanceState)
|
||||
val viewModelFactory =
|
||||
LibraryViewModelFactory(requireNotNull(this.activity).application, args.libraryId)
|
||||
viewModel = ViewModelProvider(this, viewModelFactory).get(LibraryViewModel::class.java)
|
||||
val viewModel: LibraryViewModel by viewModels { viewModelFactory }
|
||||
binding.viewModel = viewModel
|
||||
binding.itemsRecyclerView.adapter =
|
||||
ViewItemListAdapter(ViewItemListAdapter.OnClickListener {
|
||||
|
|
|
@ -5,19 +5,21 @@ import androidx.fragment.app.Fragment
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import dev.jdtech.jellyfin.R
|
||||
import dev.jdtech.jellyfin.databinding.FragmentLoginBinding
|
||||
import dev.jdtech.jellyfin.viewmodels.LoginViewModel
|
||||
|
||||
class LoginFragment : Fragment() {
|
||||
|
||||
private val viewModel: LoginViewModel by viewModels()
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View {
|
||||
val binding = FragmentLoginBinding.inflate(inflater)
|
||||
val viewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
|
||||
binding.lifecycleOwner = this
|
||||
binding.viewModel = viewModel
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import android.view.LayoutInflater
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import dev.jdtech.jellyfin.adapters.CollectionListAdapter
|
||||
|
@ -12,13 +13,15 @@ import dev.jdtech.jellyfin.databinding.FragmentMediaBinding
|
|||
import dev.jdtech.jellyfin.viewmodels.MediaViewModel
|
||||
|
||||
class MediaFragment : Fragment() {
|
||||
|
||||
private val viewModel: MediaViewModel by viewModels()
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View {
|
||||
val binding = FragmentMediaBinding.inflate(inflater, container, false)
|
||||
val viewModel = ViewModelProvider(this).get(MediaViewModel::class.java)
|
||||
|
||||
binding.lifecycleOwner = this
|
||||
binding.viewModel = viewModel
|
||||
|
|
|
@ -7,7 +7,7 @@ import android.view.LayoutInflater
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import dev.jdtech.jellyfin.adapters.PersonListAdapter
|
||||
|
@ -19,7 +19,6 @@ import dev.jdtech.jellyfin.viewmodels.MediaInfoViewModelFactory
|
|||
class MediaInfoFragment : Fragment() {
|
||||
|
||||
private lateinit var binding: FragmentMediaInfoBinding
|
||||
private lateinit var viewModel: MediaInfoViewModel
|
||||
|
||||
private val args: MediaInfoFragmentArgs by navArgs()
|
||||
|
||||
|
@ -39,7 +38,8 @@ class MediaInfoFragment : Fragment() {
|
|||
|
||||
val viewModelFactory =
|
||||
MediaInfoViewModelFactory(requireNotNull(this.activity).application, args.itemId)
|
||||
viewModel = ViewModelProvider(this, viewModelFactory).get(MediaInfoViewModel::class.java)
|
||||
val viewModel: MediaInfoViewModel by viewModels { viewModelFactory }
|
||||
|
||||
binding.viewModel = viewModel
|
||||
|
||||
viewModel.item.observe(viewLifecycleOwner, { item ->
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
package dev.jdtech.jellyfin.fragments
|
||||
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import dev.jdtech.jellyfin.adapters.EpisodeListAdapter
|
||||
|
@ -15,7 +15,6 @@ import dev.jdtech.jellyfin.viewmodels.SeasonViewModelFactory
|
|||
|
||||
class SeasonFragment : Fragment() {
|
||||
|
||||
private lateinit var viewModel: SeasonViewModel
|
||||
private lateinit var binding: FragmentSeasonBinding
|
||||
|
||||
private val args: SeasonFragmentArgs by navArgs()
|
||||
|
@ -36,7 +35,7 @@ class SeasonFragment : Fragment() {
|
|||
args.seriesId,
|
||||
args.seasonId
|
||||
)
|
||||
viewModel = ViewModelProvider(this, viewModelFactory).get(SeasonViewModel::class.java)
|
||||
val viewModel: SeasonViewModel by viewModels { viewModelFactory }
|
||||
binding.viewModel = viewModel
|
||||
binding.episodesRecyclerView.adapter =
|
||||
EpisodeListAdapter(EpisodeListAdapter.OnClickListener {
|
||||
|
|
|
@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import dev.jdtech.jellyfin.R
|
||||
|
@ -28,8 +29,7 @@ class ServerSelectFragment : Fragment() {
|
|||
val dataSource = ServerDatabase.getInstance(application).serverDatabaseDao
|
||||
|
||||
val viewModelFactory = ServerSelectViewModelFactory(dataSource, application)
|
||||
val viewModel =
|
||||
ViewModelProvider(this, viewModelFactory).get(ServerSelectViewModel::class.java)
|
||||
val viewModel: ServerSelectViewModel by viewModels { viewModelFactory }
|
||||
|
||||
binding.lifecycleOwner = this
|
||||
binding.viewModel = viewModel
|
||||
|
|
Loading…
Reference in a new issue