Witam,
Nie wiem czy dobrze wytłumaczę swój problem, ale gdyby było coś nie jasne to ewentualnie sprecyzuje. Mam fragment w którym wywołuje base adapter, a z niego wołam listenera. W nim wołam retrofita i z niego chciałbym wywołać meteodę we fragmencie, a dokładniej po prostu zmienić fragment. Z reguły przekazuje instancję fragmentu i wołam metodę, którą potrzebuję. W tym przypadku jest tak duża drabinka, że chciałbym jakoś to skrócić. Czy ktoś mógłby mi poradzić jak to zrobić? Poniżej fragmenty kodu.
Metoda wywołująca adapter z fragmentu:
public void listaNajemcow(List<User> newLista) {
listaNajemcow.addAll(newLista);
adapter = new AdapterWyswietlNajemcow(getActivity(), listaNajemcow);
lista.setAdapter(adapter);
lista.setOnItemClickListener(akcjaNajemca);
topText.setVisibility(View.GONE);
}
Wywołanie listenera z adaptera:
usun.setOnClickListener(new DialogUsunNajemce(view, R.layout.dialog_usun_najemce).pokazUser);
Mój listener z którego wołam retrofita
public class DialogUsunNajemce {
private View view;
private Integer widok;
private String idUser;
private View mainView;
public DialogUsunNajemce(View view, int widok) {
this.widok = widok;
this.view = view;
this.mainView = view;
}
public View.OnClickListener pokazUser = new View.OnClickListener() {
@Override
public void onClick(View view) {
TextView idUserTV = (TextView) mainView.findViewById(R.id.id_user_adapter_wyswietlanie_najemcow);
idUser = idUserTV.getText().toString();
pokazAlert();
}
};
public void pokazAlert() {
AlertDialog.Builder dialog = new AlertDialog.Builder(view.getContext());
dialog.setTitle("Potwierdz usunięcię");
TextView person = (TextView) view.findViewById(R.id.person_adapter_wyswietlanie_najemcow);
Log.e("person", "person" + person.getText());
dialog.setMessage("Czy napewno chcesz usunąć :" + idUser);
dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
new DeleteTenant().getDeleteTenant(mainView);
}
});
dialog.setNegativeButton("ANULUJ",null);
dialog.show();
}
}
No i na końcu kod retrofita w którym chciałbym wywołać metodę z fragmentu:
public class DeleteTenant extends Metody {
public void getDeleteTenant(final View context) {
APIInterface apiInterface = ServiceGenerator.createService(APIInterface.class);
Call<Integer> call = apiInterface.deleteTenant(getMieszkanieUser().getIdPowiazania());
call.enqueue(new Callback<Integer>() {
@Override
public void onResponse(Call<Integer> call, Response<Integer> response) {
Integer list = response.body();
//w tym miejscu chce wywołać tą metodę
}
@Override
public void onFailure(Call<Integer> call, Throwable t) {
new ShowToast().showToast(getActivity(), "Niestety coś poszło nie tak. Status nie zmieniony");
}
});
}
}
Czy jest ktoś w stanie podpowiedzieć mi jak to zrobić lub ewentualnie podesłać gotowe rozwiązanie?