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()'を使用しなければなりません。 lpはクラッシュplsとスタックトレースを提供します –

答えて

0

同期イベントが必要な場合は、コールバックを正しく使用しているため動作しないため、明確ではありません。

onSuccesssearchRemetenteDestinatario前に、任意の順序 で実行するように保証されていないあなたは、データがリスト

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

になりたい場合は、リスナーのコールバックメソッド内でそれを移動する必要があり、そのリストに

を使用していますnullpointerexceptionは進行状況ダイアログには関係していないので、

関連する問題