تغییرات بر روی لایه View و ViewModel
کد این بخش:
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()
})
}