//ParseRequestDispatcher#loadProduct() /** * Load all [Product]s that are flagged as promotion. */ public fun loadProducts(lat: Double, lng: Double, callback: (List?, Exception?) -> Unit) { val params = HashMap() params.put("businessId", businessAppId) params.put("lat", lat) params.put("lng", lng) ParseCloud.callFunctionInBackground(Functions.PRODUCTS, params, callback) } //Cart.kt Object val addressChangedListeners = arrayListOf() var consumerAddress: ConsumerAddress? = null set(address) { field = address if (address != null) { this.consumer = address.consumer mParseCart.consumerAddress = address mParseCart.consumer = consumer!! addressChangedListeners.forEach { it.onAddressChanged(address) } } } //MainActivity inside onCreate //Setup Address Listener Cart.addressChangedListeners.add(object : Cart.AddressChangedListener { override fun onAddressChanged(address: ConsumerAddress) { //Load Products with chosen address location as coverage parameter. ParseRequestDispatcher.loadProducts(address.location.latitude, address.location.longitude, { products, exception -> loadProductsCallback(products, exception) }) } })