1

I'm trying to transform a response from server to my databinding object... I didn't understand too much how i make that with the Transformations of livedata...

I think i'm i need to change few things, but i didnt find what i need to change...

:(

When i call loadSellers(), it dont enter on switchMap function

Can someone help me?

public class SellersViewModel extends BaseViewModel {

private EzGasRepository repository;
private MutableLiveData<List<Seller>> sellers;

@Inject
public SellersViewModel(EzGasRepository repository) {
    this.repository = repository;
}

public LiveData<List<Seller>> fetchAllSellers() {
    if (sellers == null) {
        sellers = new MutableLiveData<>();
        loadSellers();
    }
    return sellers;
}

private LiveData<List<Seller>> loadSellers() {
    return Transformations.switchMap(repository.fetchAllSellers(), input -> {
        List<Seller> sellerList = new ArrayList<>();

        for (SellerResponse sellerResponse: input) {
            Seller seller = new Seller();

            seller.setSellerName(sellerResponse.getName());
            seller.setRating(sellerResponse.getRating());
            seller.setProductValue(sellerResponse.getProduct().getValue());
            seller.setSellerAddress(sellerResponse.getAddress().getFormattedAddress());

            sellerList.add(seller);
        }
        return sellers;
    });
}
}

This is my repository

public LiveData<List<SellerResponse>> fetchAllSellers() {
    MutableLiveData<List<SellerResponse>> data = new MutableLiveData<>();

    ezGasApi.fetchAllSellers().enqueue(new Callback<List<SellerResponse>>() {
        @Override
        public void onResponse(Call<List<SellerResponse>> call, Response<List<SellerResponse>> response) {
            if(response.isSuccessful()) {
                data.setValue(response.body());
            } else {
                //data.setValue(response.errorBody());
            }
        }

        @Override
        public void onFailure(Call<List<SellerResponse>> call, Throwable t) {
            //data.setValue(t.getMessage());
            Timber.e(t);
        }
    });
    return data;
}

This is my View

viewModel.fetchAllSellers().observe(this, response -> {

    });
Felipe A.
  • 929
  • 3
  • 12
  • 28

0 Answers0