mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-23 19:32:16 +00:00
Add: Database instance to Main fragments VM
This commit is contained in:
parent
6c21afb8a1
commit
70eee26048
@ -5,8 +5,8 @@ import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
@ -26,7 +26,7 @@ import kotlinx.coroutines.launch
|
||||
|
||||
class ExploreFragment : MainNavFragmentX(), CursorOwner.Callback {
|
||||
|
||||
override val viewModel: MainNavFragmentViewModelX by viewModels()
|
||||
override lateinit var viewModel: MainNavFragmentViewModelX
|
||||
private lateinit var binding: FragmentExploreXBinding
|
||||
|
||||
override val source = Source.AVAILABLE
|
||||
@ -41,6 +41,9 @@ class ExploreFragment : MainNavFragmentX(), CursorOwner.Callback {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = FragmentExploreXBinding.inflate(inflater, container, false)
|
||||
binding.lifecycleOwner = this
|
||||
val viewModelFactory = MainNavFragmentViewModelX.Factory(mainActivityX.db)
|
||||
viewModel = ViewModelProvider(this, viewModelFactory)
|
||||
.get(MainNavFragmentViewModelX::class.java)
|
||||
|
||||
binding.recyclerView.apply {
|
||||
layoutManager = LinearLayoutManager(context)
|
||||
|
@ -5,7 +5,7 @@ import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.looker.droidify.database.CursorOwner
|
||||
@ -26,7 +26,7 @@ import io.reactivex.rxjava3.schedulers.Schedulers
|
||||
|
||||
class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
|
||||
|
||||
override val viewModel: MainNavFragmentViewModelX by viewModels()
|
||||
override lateinit var viewModel: MainNavFragmentViewModelX
|
||||
private lateinit var binding: FragmentInstalledXBinding
|
||||
|
||||
private val installedItemAdapter = ItemAdapter<VAppItem>()
|
||||
@ -47,6 +47,9 @@ class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = FragmentInstalledXBinding.inflate(inflater, container, false)
|
||||
binding.lifecycleOwner = this
|
||||
val viewModelFactory = MainNavFragmentViewModelX.Factory(mainActivityX.db)
|
||||
viewModel = ViewModelProvider(this, viewModelFactory)
|
||||
.get(MainNavFragmentViewModelX::class.java)
|
||||
|
||||
installedFastAdapter = FastAdapter.with(installedItemAdapter)
|
||||
installedFastAdapter?.setHasStableIds(true)
|
||||
|
@ -5,7 +5,7 @@ import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.looker.droidify.database.CursorOwner
|
||||
@ -26,7 +26,7 @@ import io.reactivex.rxjava3.schedulers.Schedulers
|
||||
|
||||
class LatestFragment : MainNavFragmentX(), CursorOwner.Callback {
|
||||
|
||||
override val viewModel: MainNavFragmentViewModelX by viewModels()
|
||||
override lateinit var viewModel: MainNavFragmentViewModelX
|
||||
private lateinit var binding: FragmentLatestXBinding
|
||||
|
||||
private val updatedItemAdapter = ItemAdapter<VAppItem>()
|
||||
@ -47,6 +47,9 @@ class LatestFragment : MainNavFragmentX(), CursorOwner.Callback {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = FragmentLatestXBinding.inflate(inflater, container, false)
|
||||
binding.lifecycleOwner = this
|
||||
val viewModelFactory = MainNavFragmentViewModelX.Factory(mainActivityX.db)
|
||||
viewModel = ViewModelProvider(this, viewModelFactory)
|
||||
.get(MainNavFragmentViewModelX::class.java)
|
||||
|
||||
updatedFastAdapter = FastAdapter.with(updatedItemAdapter)
|
||||
updatedFastAdapter?.setHasStableIds(true)
|
||||
|
@ -10,7 +10,7 @@ import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX
|
||||
abstract class MainNavFragmentX : Fragment(), CursorOwner.Callback {
|
||||
val mainActivityX: MainActivityX
|
||||
get() = requireActivity() as MainActivityX
|
||||
abstract val viewModel: MainNavFragmentViewModelX
|
||||
abstract var viewModel: MainNavFragmentViewModelX
|
||||
abstract val source: Source
|
||||
|
||||
open fun onBackPressed(): Boolean = false
|
||||
|
@ -1,15 +1,20 @@
|
||||
package com.looker.droidify.ui.viewmodels
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import com.looker.droidify.database.CursorOwner
|
||||
import com.looker.droidify.database.DatabaseX
|
||||
import com.looker.droidify.entity.ProductItem
|
||||
import com.looker.droidify.ui.fragments.Source
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.*
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.SharingStarted
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.stateIn
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class MainNavFragmentViewModelX : ViewModel() {
|
||||
class MainNavFragmentViewModelX(val db: DatabaseX) : ViewModel() {
|
||||
|
||||
private val _order = MutableStateFlow(ProductItem.Order.LAST_UPDATE)
|
||||
private val _sections = MutableStateFlow<ProductItem.Section>(ProductItem.Section.All)
|
||||
@ -86,4 +91,14 @@ class MainNavFragmentViewModelX : ViewModel() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Factory(val db: DatabaseX) : ViewModelProvider.Factory {
|
||||
@Suppress("unchecked_cast")
|
||||
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
|
||||
if (modelClass.isAssignableFrom(MainNavFragmentViewModelX::class.java)) {
|
||||
return MainNavFragmentViewModelX(db) as T
|
||||
}
|
||||
throw IllegalArgumentException("Unknown ViewModel class")
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user