OnResponse в Volley, не позволяющий использовать ArrayList - PullRequest
0 голосов
/ 25 февраля 2019

Я использую залп для анализа некоторых JSON, в методе onResponse я зарегистрировал данные, возвращенные из API, и вижу, что все в порядке.Я также проверил, что мое представление переработчика работает нормально с некоторыми фиктивными данными.Когда я пытаюсь добавить данные, возвращенные из API, в ArrayList, массив возвращается пустым, и ни один из объектов, созданных в onResponse, отсутствует.

public class AllCoinSearch extends AppCompatActivity {

private RequestQueue mQueue;

//    private SearchView searchView;

RecyclerView.LayoutManager mlayoutManager;
RecyclerView.Adapter adapter;
private RecyclerView recyclerView;

private ArrayList<CoinItemChangelly> coinitemList;
ArrayList<String> demoList = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_all_coin_search);

    recyclerView = findViewById(R.id.allSearchCoinsRecyclerView);

    coinitemList = new ArrayList<>();

    getCoins(coinitemList);

    mlayoutManager = new LinearLayoutManager(this);
    adapter = new SearchAdapter(demoList);
    recyclerView.setLayoutManager(mlayoutManager);
    recyclerView.setAdapter(adapter);

}

public void getCoins(ArrayList<CoinItemChangelly> coinitemList) {
    mQueue = Volley.newRequestQueue(this);
    String url = "https://min-api.cryptocompare.com/data/all/coinlist";
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {

            try {
                JSONObject arr = response.getJSONObject("Data");
                Iterator<String> keys = arr.keys();


                while (keys.hasNext()) {
                    String keyValue = keys.next();
                    String coinName = arr.getJSONObject(keyValue).getString("CoinName");
                    String coinSymbol = arr.getJSONObject(keyValue).getString("Symbol");
                    String coinImage = arr.getJSONObject(keyValue).getString("ImageUrl");
                    coinitemList.add(new CoinItemChangelly(coinSymbol, coinImage, coinName));
//                        Log.i("PRINTING",coinName);
//                        Log.i("PRINTING",coinSymbol);
//                        Log.i("PRINTING",coinImage);
//          
                    }
                } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.i("ERROR: ", "not working");

        }
    });
    mQueue.add(request);
}
}
...