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.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.fragment.app.viewModels
|
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.lifecycle.repeatOnLifecycle
|
import androidx.lifecycle.repeatOnLifecycle
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
@ -26,7 +26,7 @@ import kotlinx.coroutines.launch
|
|||||||
|
|
||||||
class ExploreFragment : MainNavFragmentX(), CursorOwner.Callback {
|
class ExploreFragment : MainNavFragmentX(), CursorOwner.Callback {
|
||||||
|
|
||||||
override val viewModel: MainNavFragmentViewModelX by viewModels()
|
override lateinit var viewModel: MainNavFragmentViewModelX
|
||||||
private lateinit var binding: FragmentExploreXBinding
|
private lateinit var binding: FragmentExploreXBinding
|
||||||
|
|
||||||
override val source = Source.AVAILABLE
|
override val source = Source.AVAILABLE
|
||||||
@ -41,6 +41,9 @@ class ExploreFragment : MainNavFragmentX(), CursorOwner.Callback {
|
|||||||
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)
|
||||||
|
viewModel = ViewModelProvider(this, viewModelFactory)
|
||||||
|
.get(MainNavFragmentViewModelX::class.java)
|
||||||
|
|
||||||
binding.recyclerView.apply {
|
binding.recyclerView.apply {
|
||||||
layoutManager = LinearLayoutManager(context)
|
layoutManager = LinearLayoutManager(context)
|
||||||
|
@ -5,7 +5,7 @@ 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.fragment.app.viewModels
|
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.CursorOwner
|
import com.looker.droidify.database.CursorOwner
|
||||||
@ -26,7 +26,7 @@ import io.reactivex.rxjava3.schedulers.Schedulers
|
|||||||
|
|
||||||
class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
|
class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
|
||||||
|
|
||||||
override val viewModel: MainNavFragmentViewModelX by viewModels()
|
override lateinit var viewModel: MainNavFragmentViewModelX
|
||||||
private lateinit var binding: FragmentInstalledXBinding
|
private lateinit var binding: FragmentInstalledXBinding
|
||||||
|
|
||||||
private val installedItemAdapter = ItemAdapter<VAppItem>()
|
private val installedItemAdapter = ItemAdapter<VAppItem>()
|
||||||
@ -47,6 +47,9 @@ class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
|
|||||||
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)
|
||||||
|
viewModel = ViewModelProvider(this, viewModelFactory)
|
||||||
|
.get(MainNavFragmentViewModelX::class.java)
|
||||||
|
|
||||||
installedFastAdapter = FastAdapter.with(installedItemAdapter)
|
installedFastAdapter = FastAdapter.with(installedItemAdapter)
|
||||||
installedFastAdapter?.setHasStableIds(true)
|
installedFastAdapter?.setHasStableIds(true)
|
||||||
|
@ -5,7 +5,7 @@ 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.fragment.app.viewModels
|
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.CursorOwner
|
import com.looker.droidify.database.CursorOwner
|
||||||
@ -26,7 +26,7 @@ import io.reactivex.rxjava3.schedulers.Schedulers
|
|||||||
|
|
||||||
class LatestFragment : MainNavFragmentX(), CursorOwner.Callback {
|
class LatestFragment : MainNavFragmentX(), CursorOwner.Callback {
|
||||||
|
|
||||||
override val viewModel: MainNavFragmentViewModelX by viewModels()
|
override lateinit var viewModel: MainNavFragmentViewModelX
|
||||||
private lateinit var binding: FragmentLatestXBinding
|
private lateinit var binding: FragmentLatestXBinding
|
||||||
|
|
||||||
private val updatedItemAdapter = ItemAdapter<VAppItem>()
|
private val updatedItemAdapter = ItemAdapter<VAppItem>()
|
||||||
@ -47,6 +47,9 @@ class LatestFragment : MainNavFragmentX(), CursorOwner.Callback {
|
|||||||
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)
|
||||||
|
viewModel = ViewModelProvider(this, viewModelFactory)
|
||||||
|
.get(MainNavFragmentViewModelX::class.java)
|
||||||
|
|
||||||
updatedFastAdapter = FastAdapter.with(updatedItemAdapter)
|
updatedFastAdapter = FastAdapter.with(updatedItemAdapter)
|
||||||
updatedFastAdapter?.setHasStableIds(true)
|
updatedFastAdapter?.setHasStableIds(true)
|
||||||
|
@ -10,7 +10,7 @@ import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX
|
|||||||
abstract class MainNavFragmentX : Fragment(), CursorOwner.Callback {
|
abstract class MainNavFragmentX : Fragment(), CursorOwner.Callback {
|
||||||
val mainActivityX: MainActivityX
|
val mainActivityX: MainActivityX
|
||||||
get() = requireActivity() as MainActivityX
|
get() = requireActivity() as MainActivityX
|
||||||
abstract val viewModel: MainNavFragmentViewModelX
|
abstract var viewModel: MainNavFragmentViewModelX
|
||||||
abstract val source: Source
|
abstract val source: Source
|
||||||
|
|
||||||
open fun onBackPressed(): Boolean = false
|
open fun onBackPressed(): Boolean = false
|
||||||
|
@ -1,15 +1,20 @@
|
|||||||
package com.looker.droidify.ui.viewmodels
|
package com.looker.droidify.ui.viewmodels
|
||||||
|
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.looker.droidify.database.CursorOwner
|
import com.looker.droidify.database.CursorOwner
|
||||||
|
import com.looker.droidify.database.DatabaseX
|
||||||
import com.looker.droidify.entity.ProductItem
|
import com.looker.droidify.entity.ProductItem
|
||||||
import com.looker.droidify.ui.fragments.Source
|
import com.looker.droidify.ui.fragments.Source
|
||||||
import kotlinx.coroutines.Dispatchers
|
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
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
class MainNavFragmentViewModelX : ViewModel() {
|
class MainNavFragmentViewModelX(val db: DatabaseX) : ViewModel() {
|
||||||
|
|
||||||
private val _order = MutableStateFlow(ProductItem.Order.LAST_UPDATE)
|
private val _order = MutableStateFlow(ProductItem.Order.LAST_UPDATE)
|
||||||
private val _sections = MutableStateFlow<ProductItem.Section>(ProductItem.Section.All)
|
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