سلام خدمت استاد و دوستان گرامی..
استاد یه مبحثی رو گذاشتن برای تمرین که مثلا لیست پربازدیدترین هارو هم با همون یه متد بگیریم..
من این فانکشن رو نوشتم ولی مشکلی که داره اینه که میاد میبینه آخرین ریکوئست چیه و اون رو به لایو دیتا میده و لایو دیتا آخرین ریکوئست رو به ویو برمیگردونه چطوری میتونم بهش بگم تک به تک انجام بده کار رو؟ آیا باید برای هر یه لیست یه فانکشن جدا بنویسم با یه لایو دیتای جدا؟
فانکشن گرفتن لیست Product:
fun requestProductLists(sortId: Int): LiveData<List<Product>> {
if ((sortId == SORT_LATEST) || (sortId == SORT_POPULAR) || (sortId == SORT_PRICE_DEC) || (sortId == SORT_PRICE_ASC)) {
progressBarLiveData.value = true
productRepository.getProducts(sortId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doFinally { progressBarLiveData.value = false }
.subscribe(object : NikeSingleObserver<List<Product>>(compositeDisposable) {
override fun onSuccess(t: List<Product>) {
_productLiveData.value = t
}
})
return productLiveData
} else throw IllegalArgumentException("sortId must be 'SORT' Field in Product DataClass..!")
}
اینهم دوتا ریکوئستی که از ویو گرفتم: (من یه متدی نوشتم برای اینکه شاید یکم خلوتتر بشه موقع initialize کردن ریسایکلر ویوها که این زیر میزارمش..)
mainViewModel.requestProductLists(SORT_LATEST).observe(viewLifecycleOwner,{
initializeRecyclerViews(
requireContext(),
latestProductRv,
RecyclerView.HORIZONTAL,
it,
productListAdapter
)
})
mainViewModel.requestProductLists(SORT_POPULAR).observe(viewLifecycleOwner,{
initializeRecyclerViews(
requireContext(),
popularProductRv,
RecyclerView.HORIZONTAL,
it,
productListAdapter
)
})
فانکشن ریسایکر ویو (اضافه):
fun initializeRecyclerViews(
context: Context,
recyclerView: RecyclerView,
orientation: Int,
products: List<Product>,
adapter: ProductListAdapter
) {
recyclerView.layoutManager =
LinearLayoutManager(context, orientation, false)
adapter.products = products as ArrayList<Product>
recyclerView.adapter = adapter
}
مشکلی که بود نمیدونستم دقیقا چی سرچ کنم تا بتونم به جوابم برسم.. امیدوارم بتونم اینجا جوابمو بگیرم..:)