Remove boiler plate code for ViewModelFactory

This commit is contained in:
LooKeR 2022-01-16 13:17:39 +05:30
parent edf55849d1
commit f48958433d
4 changed files with 4 additions and 20 deletions

View File

@ -4,13 +4,11 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.looker.droidify.database.Product import com.looker.droidify.database.Product
import com.looker.droidify.databinding.FragmentExploreXBinding import com.looker.droidify.databinding.FragmentExploreXBinding
import com.looker.droidify.entity.Repository import com.looker.droidify.entity.Repository
import com.looker.droidify.ui.items.VAppItem import com.looker.droidify.ui.items.VAppItem
import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX
import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG
import com.looker.droidify.utility.RxUtils import com.looker.droidify.utility.RxUtils
import com.mikepenz.fastadapter.FastAdapter import com.mikepenz.fastadapter.FastAdapter
@ -21,7 +19,6 @@ import io.reactivex.rxjava3.schedulers.Schedulers
// TODO create categories layouts that hold the apps in horizontal layout // TODO create categories layouts that hold the apps in horizontal layout
class ExploreFragment : MainNavFragmentX() { class ExploreFragment : MainNavFragmentX() {
override lateinit var viewModel: MainNavFragmentViewModelX
private lateinit var binding: FragmentExploreXBinding private lateinit var binding: FragmentExploreXBinding
private lateinit var appsItemAdapter: PagedModelAdapter<Product, VAppItem> private lateinit var appsItemAdapter: PagedModelAdapter<Product, VAppItem>
private var appsFastAdapter: FastAdapter<VAppItem>? = null private var appsFastAdapter: FastAdapter<VAppItem>? = null
@ -38,9 +35,6 @@ class ExploreFragment : MainNavFragmentX() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = FragmentExploreXBinding.inflate(inflater, container, false) binding = FragmentExploreXBinding.inflate(inflater, container, false)
binding.lifecycleOwner = this binding.lifecycleOwner = this
val viewModelFactory = MainNavFragmentViewModelX.Factory(mainActivityX.db, source)
viewModel = ViewModelProvider(this, viewModelFactory)
.get(MainNavFragmentViewModelX::class.java)
return binding.root return binding.root
} }

View File

@ -4,7 +4,6 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.looker.droidify.database.Product import com.looker.droidify.database.Product
@ -12,7 +11,6 @@ import com.looker.droidify.databinding.FragmentInstalledXBinding
import com.looker.droidify.entity.Repository import com.looker.droidify.entity.Repository
import com.looker.droidify.ui.items.HAppItem import com.looker.droidify.ui.items.HAppItem
import com.looker.droidify.ui.items.VAppItem import com.looker.droidify.ui.items.VAppItem
import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX
import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG
import com.looker.droidify.utility.RxUtils import com.looker.droidify.utility.RxUtils
import com.mikepenz.fastadapter.FastAdapter import com.mikepenz.fastadapter.FastAdapter
@ -22,7 +20,6 @@ import io.reactivex.rxjava3.schedulers.Schedulers
class InstalledFragment : MainNavFragmentX() { class InstalledFragment : MainNavFragmentX() {
override lateinit var viewModel: MainNavFragmentViewModelX
private lateinit var binding: FragmentInstalledXBinding private lateinit var binding: FragmentInstalledXBinding
private lateinit var installedItemAdapter: PagedModelAdapter<Product, VAppItem> private lateinit var installedItemAdapter: PagedModelAdapter<Product, VAppItem>
@ -42,9 +39,6 @@ class InstalledFragment : MainNavFragmentX() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = FragmentInstalledXBinding.inflate(inflater, container, false) binding = FragmentInstalledXBinding.inflate(inflater, container, false)
binding.lifecycleOwner = this binding.lifecycleOwner = this
val viewModelFactory = MainNavFragmentViewModelX.Factory(mainActivityX.db, source)
viewModel = ViewModelProvider(this, viewModelFactory)
.get(MainNavFragmentViewModelX::class.java)
return binding.root return binding.root
} }

View File

@ -4,7 +4,6 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.looker.droidify.database.Product import com.looker.droidify.database.Product
@ -12,7 +11,6 @@ import com.looker.droidify.databinding.FragmentLatestXBinding
import com.looker.droidify.entity.Repository import com.looker.droidify.entity.Repository
import com.looker.droidify.ui.items.HAppItem import com.looker.droidify.ui.items.HAppItem
import com.looker.droidify.ui.items.VAppItem import com.looker.droidify.ui.items.VAppItem
import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX
import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG
import com.looker.droidify.utility.RxUtils import com.looker.droidify.utility.RxUtils
import com.mikepenz.fastadapter.FastAdapter import com.mikepenz.fastadapter.FastAdapter
@ -22,7 +20,6 @@ import io.reactivex.rxjava3.schedulers.Schedulers
class LatestFragment : MainNavFragmentX() { class LatestFragment : MainNavFragmentX() {
override lateinit var viewModel: MainNavFragmentViewModelX
private lateinit var binding: FragmentLatestXBinding private lateinit var binding: FragmentLatestXBinding
private lateinit var updatedItemAdapter: PagedModelAdapter<Product, VAppItem> private lateinit var updatedItemAdapter: PagedModelAdapter<Product, VAppItem>
@ -43,9 +40,6 @@ class LatestFragment : MainNavFragmentX() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = FragmentLatestXBinding.inflate(inflater, container, false) binding = FragmentLatestXBinding.inflate(inflater, container, false)
binding.lifecycleOwner = this binding.lifecycleOwner = this
val viewModelFactory = MainNavFragmentViewModelX.Factory(mainActivityX.db, source)
viewModel = ViewModelProvider(this, viewModelFactory)
.get(MainNavFragmentViewModelX::class.java)
return binding.root return binding.root
} }

View File

@ -3,7 +3,7 @@ package com.looker.droidify.ui.fragments
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import com.looker.droidify.R import androidx.fragment.app.viewModels
import com.looker.droidify.entity.ProductItem import com.looker.droidify.entity.ProductItem
import com.looker.droidify.ui.activities.MainActivityX import com.looker.droidify.ui.activities.MainActivityX
import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX
@ -11,7 +11,9 @@ import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX
abstract class MainNavFragmentX : Fragment() { abstract class MainNavFragmentX : Fragment() {
val mainActivityX: MainActivityX val mainActivityX: MainActivityX
get() = requireActivity() as MainActivityX get() = requireActivity() as MainActivityX
abstract var viewModel: MainNavFragmentViewModelX val viewModel: MainNavFragmentViewModelX by viewModels {
MainNavFragmentViewModelX.Factory(mainActivityX.db, source)
}
abstract val source: Source abstract val source: Source
open fun onBackPressed(): Boolean = false open fun onBackPressed(): Boolean = false