2016-10-16 12 views
0

私はradiusオプション付きのDialogFragmentsを開発中です。このオプションはリモートデータベースからロードされ、私のリストに保存したいplayers私はVolleyを使ってリモートデータベースに接続し、プレーヤーをロードしています。Android - Volleyでリストを更新

私の問題は、リストプレーヤーが更新されないということです。です。メソッドAccion.attendancesPlayerToGameは完全に機能しますが、ラインの後に

final CharSequence[] items = new CharSequence[players.size()]の場合、players.sizeは常にゼロに等しくなります。 メソッド内にブレークポイントを置くときAcciones.attendancesPlayerToGame、リストが変更されている場合。何が問題なの?ご協力いただきありがとうございます。

DialogFragment

public AlertDialog createRadioListDialog() { 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 

    String gameID= getArguments().getString("gameID"); 

    List<JugadorView> players=new ArrayList<JugadorView>(); 
    Acciones.attendancesPlayerToGame(gameID, getContext(),players); 
    final CharSequence[] items = new CharSequence[players.size()]; 
    for(int i = 0; i< players.size();i ++){ 
     String nombre= players.get(i).nombre; 
     String apellidos = players.get(i).apellidos; 
     String nombreComplet = nombre + " " + apellidos; 
     items[i] = nombreComplet; 
    } 



more code 
    } 

attendancesPlayerToGame

public static void attendancesPlayerToGame(final String idGame,final Context context, final List<JugadorView> jugadorViewList) { 
    final String URLLISTGROUP = "http://www.myweb.com/app/file.php"; 
    final StringRequest stringRequest = new StringRequest(Request.Method.POST, URLLISTGROUP, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 


        try { 
         JSONArray jsonArray = new JSONArray(response); 

         for (int i = 0; i < jsonArray.length(); i++) { 

          JSONObject jsonObject = jsonArray.getJSONObject(i); 


          String emailJugador = jsonObject.getString("emailJugador"); 
          String nombreJugador = jsonObject.getString("nombreJugador"); 
          String apellidosJugador = jsonObject.getString("apellidosJugador"); 
          String jugadorId = jsonObject.getStri 

ng("jugadorID"); 


           JugadorView jugadorView = new JugadorView(nombreJugador, apellidosJugador, emailJugador, jugadorId); 

           jugadorViewList.add(jugadorView); 



          } 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 

        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Toast.makeText(context, error.toString(), Toast.LENGTH_LONG).show(); 
        } 
       }) { 
      @Override 
      protected Map<String, String> getParams() throws AuthFailureError { 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put("idGame", idGame); 

       return params; 
      } 

     }; 

     RequestQueue requestQueue = Volley.newRequestQueue(context); 
     requestQueue.add(stringRequest); 


    } 

答えて

0
jugadorViewList.add(jugadorView); 

//この行の後にuがこのリストのウルアダプター==> jugadorViewListを更新する必要があります。このようなものが必要です。

adapterOfJugadorList.notifyDataSetChanged(); 
+0

ありがとうございました!私はあなたの答えを試みたが、うまくいかなかった。あなたの答えを試しましたが、うまくいきません。実際にアダプタは必要ありません。リスト ' player'は、メソッド' Accion.attendancesPlayerToGame'を呼び出した後に更新されます。 – arisolarpower

+0

もしあなたがリストを持っているなら、それはアダプタを持っている必要があります、それはどのようにアンドロイドが動作するのですか...あなたはアダプタを持っていない場合、あなたはこの方法を試すことができます。 jugadorViewList.getAdapter()。notifyDataSetChanged(); – Catluc