Я не уверен, как сформулировать мою проблему, чтобы она была понятна. Но я постараюсь изо всех сил:
У меня есть 4 интерфейса:
interface OnGetViewPagerListener {
void onSuccessViewPager(Response<Feed> response);
void onFailedViewPager();
}
interface OnNextPageViewPagerListener {
void onSuccessViewPagerNextPage(Response<Feed> response);
void onFailedViewPagerNextPage();
}
interface OnGetGridViewListener{
void onSuccessGridView(Response<Feed> response);
void onFailedGridView();
}
interface OnNextPageGridViewListener{
void onSuccessGridViewNextPage(Response<Feed> response);
void onFailedGridViewNextPage();
}
И я реализую эти интерфейсы в своем классе MainRepo. Внутри каждого из этих методов содержится сетевой вызов:
Основной класс репо
@Override
public void getPostsViewPager(OnGetViewPagerListener onGetViewPagerListener, String url) {
//Network Call
RetrofitInterfaces.IGetTop service = RetrofitClientInstance.getRetrofitInstance()
.create(RetrofitInterfaces.IGetTop.class);
Call<Feed> call = service.listRepos(url);
call.enqueue(new Callback<Feed>() {
@Override
public void onResponse(@NonNull Call<Feed> call, @NonNull Response<Feed> response) {
onGetViewPagerListener.onSuccessViewPager(response);
}
@Override
public void onFailure(@NonNull Call<Feed> call, @NonNull Throwable t) {
onGetViewPagerListener.onFailedViewPager();
}
});
}
Можно ли создать метод с сетевым вызовом и с параметрами, где я мог бы использовать любой из 4 интерфейса?
private makeNetworkCall(interface canUseAnyOfThe4InterfacesHere, String url){
//Network call
}
В случае, если это сбивает с толку, вот мой код:
https://pastebin.com/y8kq9ZjQ
И, как вы можете видеть, Я не хочу вводить каждый сетевой вызов каждый раз, когда использую каждый интерфейс.