mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-06-20 14:19:19 +00:00
Update/Remove: Use ComposeView in MainNav fragments / Remove Recyclers&FastAdapters.
This commit is contained in:
@ -8,18 +8,11 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.looker.droidify.database.entity.Product
|
||||
import com.looker.droidify.database.entity.Repository
|
||||
import com.looker.droidify.databinding.FragmentExploreXBinding
|
||||
import com.looker.droidify.ui.items.VAppItem
|
||||
import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG
|
||||
import com.mikepenz.fastadapter.FastAdapter
|
||||
import com.mikepenz.fastadapter.IAdapter
|
||||
import com.mikepenz.fastadapter.paged.PagedModelAdapter
|
||||
|
||||
// TODO add chips bar to navigate categories
|
||||
class ExploreFragment : MainNavFragmentX() {
|
||||
|
||||
private lateinit var binding: FragmentExploreXBinding
|
||||
private lateinit var appsItemAdapter: PagedModelAdapter<Product, VAppItem>
|
||||
private var appsFastAdapter: FastAdapter<VAppItem>? = null
|
||||
|
||||
override val primarySource = Source.AVAILABLE
|
||||
override val secondarySource = Source.AVAILABLE
|
||||
@ -38,31 +31,9 @@ class ExploreFragment : MainNavFragmentX() {
|
||||
}
|
||||
|
||||
override fun setupAdapters() {
|
||||
appsItemAdapter = PagedModelAdapter<Product, VAppItem>(PRODUCT_ASYNC_DIFFER_CONFIG) {
|
||||
VAppItem(it.item, repositories[it.repository_id])
|
||||
}
|
||||
appsFastAdapter = FastAdapter.with(appsItemAdapter)
|
||||
appsFastAdapter?.setHasStableIds(true)
|
||||
appsFastAdapter?.onClickListener =
|
||||
{ _: View?, _: IAdapter<VAppItem>?, item: VAppItem?, _: Int? ->
|
||||
item?.item?.let {
|
||||
AppSheetX(it.packageName)
|
||||
.showNow(parentFragmentManager, "Product ${it.packageName}")
|
||||
}
|
||||
false
|
||||
}
|
||||
binding.recyclerView.apply {
|
||||
layoutManager = LinearLayoutManager(requireContext())
|
||||
setHasFixedSize(true)
|
||||
adapter = appsFastAdapter
|
||||
}
|
||||
}
|
||||
|
||||
override fun setupLayout() {
|
||||
viewModel.primaryProducts.observe(viewLifecycleOwner) {
|
||||
appsItemAdapter.submitList(it)
|
||||
appsFastAdapter?.notifyDataSetChanged()
|
||||
}
|
||||
viewModel.repositories.observe(viewLifecycleOwner) {
|
||||
repositories = it.associateBy { repo -> repo.id }
|
||||
}
|
||||
|
@ -4,26 +4,14 @@ import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.looker.droidify.database.entity.Product
|
||||
import com.looker.droidify.database.entity.Repository
|
||||
import com.looker.droidify.databinding.FragmentInstalledXBinding
|
||||
import com.looker.droidify.ui.items.HAppItem
|
||||
import com.looker.droidify.ui.items.VAppItem
|
||||
import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG
|
||||
import com.mikepenz.fastadapter.FastAdapter
|
||||
import com.mikepenz.fastadapter.paged.PagedModelAdapter
|
||||
|
||||
class InstalledFragment : MainNavFragmentX() {
|
||||
|
||||
private lateinit var binding: FragmentInstalledXBinding
|
||||
|
||||
private lateinit var installedItemAdapter: PagedModelAdapter<Product, VAppItem>
|
||||
private var installedFastAdapter: FastAdapter<VAppItem>? = null
|
||||
private lateinit var updatedItemAdapter: PagedModelAdapter<Product, HAppItem>
|
||||
private var updatedFastAdapter: FastAdapter<HAppItem>? = null
|
||||
|
||||
override val primarySource = Source.INSTALLED
|
||||
override val secondarySource = Source.UPDATES
|
||||
|
||||
@ -41,39 +29,16 @@ class InstalledFragment : MainNavFragmentX() {
|
||||
}
|
||||
|
||||
override fun setupAdapters() {
|
||||
installedItemAdapter = PagedModelAdapter<Product, VAppItem>(PRODUCT_ASYNC_DIFFER_CONFIG) {
|
||||
VAppItem(it.item, repositories[it.repository_id])
|
||||
}
|
||||
updatedItemAdapter = PagedModelAdapter<Product, HAppItem>(PRODUCT_ASYNC_DIFFER_CONFIG) {
|
||||
HAppItem(it.item, repositories[it.repository_id])
|
||||
}
|
||||
installedFastAdapter = FastAdapter.with(installedItemAdapter)
|
||||
installedFastAdapter?.setHasStableIds(true)
|
||||
binding.installedRecycler.apply {
|
||||
layoutManager = LinearLayoutManager(requireContext())
|
||||
adapter = installedFastAdapter
|
||||
}
|
||||
updatedFastAdapter = FastAdapter.with(updatedItemAdapter)
|
||||
updatedFastAdapter?.setHasStableIds(true)
|
||||
binding.updatedRecycler.apply {
|
||||
layoutManager = LinearLayoutManager(requireContext(), RecyclerView.HORIZONTAL, false)
|
||||
adapter = updatedFastAdapter
|
||||
}
|
||||
}
|
||||
|
||||
override fun setupLayout() {
|
||||
binding.buttonUpdated.setOnClickListener {
|
||||
binding.updatedRecycler.apply {
|
||||
visibility = if (visibility == View.VISIBLE) View.GONE else View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
viewModel.primaryProducts.observe(viewLifecycleOwner) {
|
||||
installedItemAdapter.submitList(it)
|
||||
}
|
||||
viewModel.secondaryProducts.observe(viewLifecycleOwner) {
|
||||
binding.updatedBar.visibility = if (it.isNotEmpty()) View.VISIBLE else View.GONE
|
||||
updatedItemAdapter.submitList(it)
|
||||
}
|
||||
viewModel.repositories.observe(viewLifecycleOwner) {
|
||||
repositories = it.associateBy { repo -> repo.id }
|
||||
|
@ -4,26 +4,14 @@ import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.looker.droidify.database.entity.Product
|
||||
import com.looker.droidify.database.entity.Repository
|
||||
import com.looker.droidify.databinding.FragmentLatestXBinding
|
||||
import com.looker.droidify.ui.items.HAppItem
|
||||
import com.looker.droidify.ui.items.VAppItem
|
||||
import com.looker.droidify.utility.PRODUCT_ASYNC_DIFFER_CONFIG
|
||||
import com.mikepenz.fastadapter.FastAdapter
|
||||
import com.mikepenz.fastadapter.paged.PagedModelAdapter
|
||||
|
||||
class LatestFragment : MainNavFragmentX() {
|
||||
|
||||
private lateinit var binding: FragmentLatestXBinding
|
||||
|
||||
private lateinit var updatedItemAdapter: PagedModelAdapter<Product, VAppItem>
|
||||
private var updatedFastAdapter: FastAdapter<VAppItem>? = null
|
||||
private lateinit var newItemAdapter: PagedModelAdapter<Product, HAppItem>
|
||||
private var newFastAdapter: FastAdapter<HAppItem>? = null
|
||||
|
||||
// TODO replace the source with one that get a certain amount of updated apps
|
||||
override val primarySource = Source.UPDATED
|
||||
override val secondarySource = Source.NEW
|
||||
@ -42,33 +30,12 @@ class LatestFragment : MainNavFragmentX() {
|
||||
}
|
||||
|
||||
override fun setupAdapters() {
|
||||
updatedItemAdapter = PagedModelAdapter<Product, VAppItem>(PRODUCT_ASYNC_DIFFER_CONFIG) {
|
||||
VAppItem(it.item, repositories[it.repository_id])
|
||||
}
|
||||
newItemAdapter = PagedModelAdapter<Product, HAppItem>(PRODUCT_ASYNC_DIFFER_CONFIG) {
|
||||
// TODO filter for only new apps and add placeholder
|
||||
HAppItem(it.item, repositories[it.repository_id])
|
||||
}
|
||||
updatedFastAdapter = FastAdapter.with(updatedItemAdapter)
|
||||
updatedFastAdapter?.setHasStableIds(true)
|
||||
binding.updatedRecycler.apply {
|
||||
layoutManager = LinearLayoutManager(requireContext())
|
||||
adapter = updatedFastAdapter
|
||||
}
|
||||
newFastAdapter = FastAdapter.with(newItemAdapter)
|
||||
newFastAdapter?.setHasStableIds(true)
|
||||
binding.newRecycler.apply {
|
||||
layoutManager = LinearLayoutManager(requireContext(), RecyclerView.HORIZONTAL, false)
|
||||
adapter = newFastAdapter
|
||||
}
|
||||
}
|
||||
|
||||
override fun setupLayout() {
|
||||
viewModel.primaryProducts.observe(viewLifecycleOwner) {
|
||||
updatedItemAdapter.submitList(it)
|
||||
}
|
||||
viewModel.secondaryProducts.observe(viewLifecycleOwner) {
|
||||
newItemAdapter.submitList(it)
|
||||
}
|
||||
viewModel.repositories.observe(viewLifecycleOwner) {
|
||||
repositories = it.associateBy { repo -> repo.id }
|
||||
|
Reference in New Issue
Block a user