Попробуйте это:
Примите параметр обратного вызова для setCoffeeShops ()
например: setCoffeeShops(Runnable callback)
И когда ваши установленные кофейни будут завершены, вызовите обратный вызов:
callback.run()
И когда вы вызываете setCoffeeShops, делайте это так:
MutableLiveData<ArrayList<CoffeeShop>> data = new MutableLiveData<>();
setCoffeeShops(()->{
data.setValue(coffeeShops);
});
return data;
ИЛИ, чтобы ваш код немного чище, используйте интерфейс вместо того, чтобы сохранять coffeeShops
как глобальная переменная, подобная этой:
interface CoffeeShopLoader {
void shopsLoaded(List<CoffeeShop> shops);
}
void setCoffeeShops(CoffeeShopLoader loader) {
...
loader.shopsLoaded(coffeeShops);
}
... // and call it like this
setCoffeeShops((shops)->{
data.setValue(shops)
});
...