我正在使用volley解析一些JSON,在onResponse方法中,我记录了从api返回的数据,并且可以看到一切正常。我还检查了我的回收站视图是否可以正确处理某些虚拟数据。当我尝试将api返回的数据添加到ArrayList时,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);
}
}