mirror of
https://github.com/Aviortheking/Neo-Store.git
synced 2025-04-22 19:02:12 +00:00
Add: New adapters to InstalledFragment
This commit is contained in:
parent
6b49062093
commit
113cb9864d
@ -6,31 +6,37 @@ import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.lifecycle.repeatOnLifecycle
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.looker.droidify.R
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.looker.droidify.database.CursorOwner
|
||||
import com.looker.droidify.databinding.FragmentInstalledXBinding
|
||||
import com.looker.droidify.ui.adapters.AppListAdapter
|
||||
import com.looker.droidify.entity.ProductItem
|
||||
import com.looker.droidify.entity.Repository
|
||||
import com.looker.droidify.ui.items.HAppItem
|
||||
import com.looker.droidify.ui.items.VAppItem
|
||||
import com.looker.droidify.ui.viewmodels.MainNavFragmentViewModelX
|
||||
import com.looker.droidify.utility.RxUtils
|
||||
import com.looker.droidify.widget.RecyclerFastScroller
|
||||
import com.mikepenz.fastadapter.FastAdapter
|
||||
import com.mikepenz.fastadapter.adapters.ItemAdapter
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.rxjava3.core.Observable
|
||||
import io.reactivex.rxjava3.disposables.Disposable
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
|
||||
|
||||
override val viewModel: MainNavFragmentViewModelX by viewModels()
|
||||
private lateinit var binding: FragmentInstalledXBinding
|
||||
|
||||
private val installedItemAdapter = ItemAdapter<VAppItem>()
|
||||
private var installedFastAdapter: FastAdapter<VAppItem>? = null
|
||||
private val updatedItemAdapter = ItemAdapter<HAppItem>()
|
||||
private var updatedFastAdapter: FastAdapter<HAppItem>? = null
|
||||
|
||||
override val source = Source.INSTALLED
|
||||
|
||||
private var repositories: Map<Long, Repository> = mapOf()
|
||||
private var repositoriesDisposable: Disposable? = null
|
||||
|
||||
override fun onCreateView(
|
||||
@ -42,11 +48,22 @@ class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
|
||||
binding = FragmentInstalledXBinding.inflate(inflater, container, false)
|
||||
binding.lifecycleOwner = this
|
||||
|
||||
binding.recyclerView.apply {
|
||||
layoutManager = LinearLayoutManager(context)
|
||||
installedFastAdapter = FastAdapter.with(installedItemAdapter)
|
||||
installedFastAdapter?.setHasStableIds(true)
|
||||
binding.installedRecycler.apply {
|
||||
layoutManager = LinearLayoutManager(requireContext())
|
||||
isMotionEventSplittingEnabled = false
|
||||
isVerticalScrollBarEnabled = false
|
||||
adapter = AppListAdapter { mainActivityX.navigateProduct(it.packageName) }
|
||||
adapter = installedFastAdapter
|
||||
RecyclerFastScroller(this)
|
||||
}
|
||||
updatedFastAdapter = FastAdapter.with(updatedItemAdapter)
|
||||
updatedFastAdapter?.setHasStableIds(true)
|
||||
binding.updatedRecycler.apply {
|
||||
layoutManager = LinearLayoutManager(requireContext(), RecyclerView.HORIZONTAL, false)
|
||||
isMotionEventSplittingEnabled = false
|
||||
isVerticalScrollBarEnabled = false
|
||||
adapter = updatedFastAdapter
|
||||
RecyclerFastScroller(this)
|
||||
}
|
||||
return binding.root
|
||||
@ -62,7 +79,7 @@ class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
|
||||
.flatMapSingle { RxUtils.querySingle { mainActivityX.db.repositoryDao.all.mapNotNull { it.trueData } } }
|
||||
.map { list -> list.asSequence().map { Pair(it.id, it) }.toMap() }
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe { (binding.recyclerView.adapter as? AppListAdapter)?.repositories = it }
|
||||
.subscribe { repositories = it }
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
@ -74,9 +91,16 @@ class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
|
||||
}
|
||||
|
||||
override fun onCursorData(request: CursorOwner.Request, cursor: Cursor?) {
|
||||
// TODO create app list out of cursor and use those on the different RecycleViews
|
||||
(binding.recyclerView.adapter as? AppListAdapter)?.apply {
|
||||
this.cursor = cursor
|
||||
// TODO get a list instead of the cursor
|
||||
// TODO use LiveData and observers instead of listeners
|
||||
val appItemList: List<ProductItem> = listOf()
|
||||
installedItemAdapter.set(appItemList
|
||||
.map { VAppItem(it, repositories[it.repositoryId]) }
|
||||
)
|
||||
updatedItemAdapter.set(appItemList.filter { it.canUpdate }
|
||||
.map { HAppItem(it, repositories[it.repositoryId]) }
|
||||
)
|
||||
/*
|
||||
lifecycleScope.launch {
|
||||
repeatOnLifecycle(Lifecycle.State.RESUMED) {
|
||||
emptyText = when {
|
||||
@ -87,6 +111,6 @@ class InstalledFragment : MainNavFragmentX(), CursorOwner.Callback {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
@ -130,7 +130,7 @@
|
||||
app:layout_constraintTop_toBottomOf="@id/modeBar">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recyclerView"
|
||||
android:id="@+id/installedRecycler"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipChildren="false"
|
||||
|
Loading…
x
Reference in New Issue
Block a user