Filter RecylerView on the basis of Model

28 Views Asked by At

Filter RecyclerView on the basis of model using FastAdapter

open class StoreModeBaseModel -> ParentClass

Child Classes

data class PersonalOfferModel(val personalOffer: PersonalOffer) : StoreModeBaseModel()
data class FavoriteOfferModel(val product: Product) : StoreModeBaseModel() 

I am using fast Adapter like

private val itemAdapter = ModelAdapter { element: StoreModeBaseModel ->
        getItem(element)
    }

private fun getItem(element: StoreModeBaseModel): GenericItem {
        return when (element) {
           
            is PersonalOfferModel -> PersonalOfferItemStoreMode(element)
            is FavoriteOfferModel -> FavoriteOfferItem(element).apply {
                this.model.product.forSaleOnline = false
            }
            else -> FooterItem(element)
        }
    }

I am setting data like

                personalOffersList.map { models.add(PersonalOfferModel(it)) }
                favoriteOffersList.map { models.add(FavoriteOfferModel(Product.mapFromDB(it))) }

                if (itemAdapter.models.isEmpty()) {
                    itemAdapter.clear()
                    itemAdapter.add(models)
                } else {
                    itemAdapter.set(models)
                }

Now on click of a tab or button I want to filter PersonalOffer and FavouriteOffer

When I click on PersonalOffer tab models with PersonalOfferModel should be shown in RecyclerView and when I select(click) on FavoriteOffer then FavoriteOfferModel items should be shown in RecyclerView

0

There are 0 best solutions below