0

retrofit2를 사용하여 Alertdialog Recyclerview 목록으로 돌아가려면 어떻게 전화를 걸 수 있습니까?동기화 호출을 갱신하고 경고 대화 상자에서 recyclerview를 반환하십시오.

retrofit2 호출을 진행률 표시 줄과 함께 사용하려고했지만 반환 된 null 포인터 예외가 여전히 반환됩니다.

public class CtePresenter { 

    private ProgressDialog dialog; 
    private ServiceOSB service; 
    private String authToken; 

    public CtePresenter(Context context) { 
     this.dialog = new ProgressDialog(context); 
     this.dialog.setIndeterminate(true); 
     this.service = ServiceOSB.getInstance(Prefs.getAmbiente(context)); 
     this.authToken = Prefs.getAuthToken(context); 
    } 

    public void listaCliente(final RequestListener<RetListaCliente> listener) { 
     dialog.setMessage("Carregando..."); 
     dialog.show(); 
     dialog.setCancelable(false); 
     dialog.setCanceledOnTouchOutside(false); 

     try { 
      service.getCteService().listaCliente(authToken).enqueue(new RequestCallback<RetListaCliente>(listener, dialog)); 
     } catch (Exception e) { 
      Log.d(Util.TAG_LOG, e.getMessage()); 
      listener.onError(e.getMessage()); 
     } 
    } 

    searchRemetente.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(final View v) { 
      final List<RetListaCliente.Cliente> lstCliente = new ArrayList<>(); 
      CtePresenter ctePresenter = new CtePresenter(getActivity()); 
      ctePresenter.listaCliente(new RequestListener<RetListaCliente>() { 
       @Override 
       public void onSuccess(RetListaCliente response) { 
        for (RetListaCliente.Cliente c : response.getClientes()) { 
         lstCliente.add(c); 
        } 
       } 

       @Override 
       public void onError(String error) { 

       } 

       @Override 
       public void onUnauthoried(String error) { 

       } 
      }); 
      searchRemetenteDestinatario(v, lstCliente); 
     } 
    }); 
} 
+0

은 Retrofit 2와 동기식 호출을하기 위해'enqueue()'대신'execute()'를 사용해야한다는 것을 분명히해야합니다. 스택 pls를 제공하는 충돌 pls와 lp –

답변

0

콜백을 올바르게 사용하는 경우 작동하므로 동기 이벤트가 필요한지 확실하지 않습니다.

onSuccesssearchRemetenteDestinatario 전에 순서 에서 실행되도록 보장되지 않으므로 것은

당신은 당신이 목록에 데이터를 원하는 경우 리스너 콜백 메소드 내부를 이동해야하는이 목록을 사용

@Override 
public void onSuccess(RetListaCliente response) { 
    lstCliente.clear(); 
    for (RetListaCliente.Cliente c : response.getClientes()) { 
     lstCliente.add(c); 
    } 
    // searchRemetenteDestinatario 
} 

nullpointerexception이 진행 대화 상자와 관련이없는 것 같기 때문에,