Я использую Volley для получения формата JSON от сервера следующим путем:Следующий код выполняется, прежде чем данные хранятся в файле JSON
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_device_report);
setContentView(R.layout.activity_fuel);
linechart = (LineChart) findViewById(R.id.lineChart);
requestQueue = Volley.newRequestQueue(this);
JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET, url,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try{
JSONArray dataset = response.getJSONArray("dataset");
JSONObject petrol = dataset.getJSONObject(0);
JSONObject diesel = dataset.getJSONObject(1);
JSONArray categories = response.getJSONArray("categories");
JSONArray petrolarray = petrol.getJSONArray("data");
JSONArray dieselarray = diesel.getJSONArray("data");
Log.d("debug","Size of PetrolArray: " + petrolarray.length());
for(int i = 0; i<petrolarray.length();i++) {
Log.d("debug", "Petrol Prices consists of: " + petrolarray.getJSONObject(i).getString("value"));
float prtl = Float.parseFloat(petrolarray.getJSONObject(i).getString("value"));
float dsl = Float.parseFloat(dieselarray.getJSONObject(i).getString("value"));
petrolPrices.add(new Entry(i,prtl));
dieselPrices.add(new Entry(i,dsl));
xMonths.add(categories.getJSONObject(i).getString("label"));
}
} catch (JSONException e){
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(req);
ArrayList<ILineDataSet> lineDataSets= new ArrayList<>();
LineDataSet lineDataSet1 = new LineDataSet(petrolPrices,"petrol");
lineDataSets.add(lineDataSet1);
Log.d("debug","Size of PetrolPrices: " + petrolPrices.size());
linechart.setData(new LineData(lineDataSets));
linechart.setVisibleXRangeMaximum(12);
}
Когда я проверить этот код, Debug сообщение с «Размер «PetrolPrices» появляется первым, а затем появляется сообщение «Размер PetrolArray» Debug Messages. Это означает, что маркер PetrolPrices пуст, когда он рисует график, вызывающий ошибку. Данные не добавляются в него до тех пор, пока код не будет раньше.
Я не уверен, объяснил ли я это хорошо, но, надеюсь, этого достаточно. Как я могу исправить эту проблему?