کد این بخش:

class ProductListViewModel(application: Application) : AndroidViewModel(application) {

    private var mRepository: DataRepository

    private var mObservableProducts: MediatorLiveData<List<ProductEntity>>

    init {
        mObservableProducts = MediatorLiveData()
        // set by default null, until we get data from the database.
        mObservableProducts.value = null
        mRepository = (application as BasicApp).getRepository()
        val products = mRepository.getProducts()
        mObservableProducts.addSource(products , mObservableProducts::setValue)
    }

    fun getProducts(): LiveData<List<ProductEntity>> {
        return mObservableProducts
    }

    fun searchProducts(query: String){
    }
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    viewModel = ViewModelProvider(this).get(ProductListViewModel::class.java)
    mBinding.lifecycleOwner = this

    subscribeUi(viewModel.getProducts())
}

private fun subscribeUi(liveData: LiveData<List<ProductEntity>>) {
    liveData.observe(viewLifecycleOwner, Observer { myProducts ->
        if (myProducts != null) {
            mBinding.isLoading = false
            mProductAdapter?.setProductList(myProducts)
        } else {
            mBinding.isLoading = true
        }
        mBinding.executePendingBindings()
    })
}