Сегодня я работал над своей домашней работой, которая заключалась в создании простых приложений с вызовами дооснащения и изучении новых вещей для улучшения кода, и каким-то образом я увидел, что есть так много способов написать меньше кода и добиться большего успеха с OOP. Поэтому, чтобы улучшить свой эксперимент с кодом, я пытаюсь сделать вызовы для модификации с помощью OOP. Так что это моя проблема прямо сейчас:
Рассмотрим простой вызов дооснащения с помощью CompositeDisposable
(я разрабатываю свои простые с помощью MVP):
mView.showProgress(1);
RequestRemainingProductsRequest requestRemainingProductsRequest = new RequestRemainingProductsRequest();
requestRemainingProductsRequest.distributorId = distributorId;
requestRemainingProductsRequest.requestCode = requestCode;
requestRemainingProductsRequest.requestType = 1;
NetworkCalls.getObservableList();
compositeDisposable.add(getApi().requestRemainingProducts(requestRemainingProductsRequest)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<List<Products>>() {
@Override
public void accept(List<Products> products) throws Throwable {
mView.hideProgress(1);
mView.getRemainingProducts(products);
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
mView.hideProgress(1);
mView.showLog(throwable.getMessage().toString());
}
}));
И еще один вызов дооснащения без CompositeDisposable
:
ProductSellerRequest productSellerRequest = new ProductSellerRequest();
productSellerRequest.centralId = centralsList.get(i).requestCentralId;
productSellerRequest.requestType = 0;
productSellerRequest.productId = Constant.currentProduct.productId;
getApi().checkProductExistInRequest(productSellerRequest)
.enqueue(new Callback<ProductSellerCallback>() {
@Override
public void onResponse(Call<ProductSellerCallback> call, Response<ProductSellerCallback> response) {
hideProgress(myViewHolder);
showAddDialog(myViewHolder, v, response, i);
}
@Override
public void onFailure(Call<ProductSellerCallback> call, Throwable t) {
hideProgress(myViewHolder);
}
});
Допустим, я создал класс java с NetworkCalls.java
и создал 2 пустоты, подобные этому:
public static void getObservableList()
{
}
public static void getWithoutObservableList()
{
}
Как обработать мой ответ на возврат на мой Presenter/Activity
?
Вот как я использую StringBuilder
и возвращаю свою строку, но я пытаюсь сделать похожий способ сделать хранилище для моих сетевых вызовов, а затем узнать все, что я должен знать о Repository Pattern
.
public static String TotalPriceStringBuilder(int Price){
String DecimalPrice = String.format("%,d", Price);
String FinalString = new StringBuilder("Price : ").append(DecimalPrice).append(" $").toString();
return String.valueOf(FinalString);
}
Это то, что я пробовал, но я все еще не знаю, как это исправить или заставить его работать, что вернуть, как вернуть и т. Д. c. ..:
private static ApiClient mApi;
private List<Products> receivedProducts;
private int hideProgress;
private boolean status;
private String message;
public void getObservableList(RequestRemainingProductsRequest requestRemainingProductsRequest, CompositeDisposable compositeDisposable)
{
compositeDisposable.add(getApi().requestRemainingProducts(requestRemainingProductsRequest)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<List<Products>>() {
@Override
public void accept(List<Products> products) throws Throwable {
hideProgress = 1;
receivedProducts = products;
status = TRUE;
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
hideProgress = 1;
status = FALSE;
message = throwable.getMessage().toString();
}
}));
if (status == TRUE) {
return hideProgress, receivedProducts, status;
} else {
return hideProgress, message, status;
}
}
public ApiClient getApi() {
if (mApi == null) {
mApi = ApiService.getClient().create(ApiClient.class);
}
return mApi;
}
Если я использую метод static
, я получу кучу ошибок, например, невозможно отреагировать из контекста stati c или et c ...