Я бы хотел, чтобы мое приложение Android получало данные с использованием Volley и отображало диаграмму с помощью High Charts с использованием полученных данных. На данный момент график все еще находится на демо-странице High Chart. Каждая часть кода работает хорошо сама по себе, но при объединении получается
java .util.NoSuchElementException: HIOptions не найдены в HIChartView
private JSONArray measurements = new JSONArray();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chart);
fetchData(new VolleyCallBack() {
@Override
public void onSuccess() {
renderChart();
}
});
}
private void fetchData(final VolleyCallBack callBack) {
RequestQueue queue = Volley.newRequestQueue(this);
String url = ""; // hid my url for safety reasons
JsonArrayRequest req = new JsonArrayRequest(Request.Method.GET,
url,
null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
upDateData(response);
callBack.onSuccess();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
}
}){
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
SharedPreferences preferences = getSharedPreferences("LOGIN", Context.MODE_PRIVATE);
String token = "Bearer " + preferences.getString("token", "");
Map<String, String> headers = new HashMap<>();
headers.put("Content-Type", "application/json");
headers.put("Authorization", token);
return headers;
}
};
queue.add(req);
}
private void upDateData(JSONArray response) {
measurements = response;
}
private void renderChart() {
HIChartView chartView = (HIChartView) findViewById(R.id.hc);
HIOptions options = new HIOptions();
HIChart chart = new HIChart();
chart.setType("column");
options.setChart(chart);
HITitle title = new HITitle();
title.setText("UEFA Champions League 2016/17");
HISubtitle subtitle = new HISubtitle();
subtitle.setText("Team statistics");
options.setTitle(title);
options.setSubtitle(subtitle);
final HIYAxis hiyAxis = new HIYAxis();
hiyAxis.setMin(0);
hiyAxis.setTitle(new HITitle());
hiyAxis.getTitle().setText("Number");
options.setYAxis(new ArrayList() {{
add(hiyAxis);
}});
final HIXAxis hixAxis = new HIXAxis();
ArrayList categories = new ArrayList<>();
categories.add("Goals");
categories.add("Assists");
categories.add("Shots On Goal");
categories.add("Shots");
hixAxis.setCategories(categories);
options.setXAxis(new ArrayList() {{
add(hixAxis);
}});
HIPlotOptions plotOptions = new HIPlotOptions();
plotOptions.setColumn(new HIColumn());
plotOptions.getColumn().setPointPadding(0.2);
plotOptions.getColumn().setBorderWidth(0);
options.setPlotOptions(plotOptions);
HIColumn realMadrid = new HIColumn();
realMadrid.setName("Real Madrid");
ArrayList realMadridData = new ArrayList<>();
realMadridData.add(36);
realMadridData.add(31);
realMadridData.add(93);
realMadridData.add(236);
realMadrid.setData(realMadridData);
HIColumn juventus = new HIColumn();
juventus.setName("Juventus");
ArrayList juventusData = new ArrayList<>();
juventusData.add(22);
juventusData.add(10);
juventusData.add(66);
juventusData.add(178);
juventus.setData(juventusData);
HIColumn monaco = new HIColumn();
monaco.setName("Monaco");
ArrayList monacoData = new ArrayList<>();
monacoData.add(22);
monacoData.add(17);
monacoData.add(56);
monacoData.add(147);
monaco.setData(monacoData);
HIColumn atleticoMadrid = new HIColumn();
atleticoMadrid.setName("Atlético Madrid");
ArrayList atleticoMadridData = new ArrayList<>();
atleticoMadridData.add(15);
atleticoMadridData.add(9);
atleticoMadridData.add(55);
atleticoMadridData.add(160);
atleticoMadrid.setData(atleticoMadridData);
ArrayList series = new ArrayList<>();
series.add(realMadrid);
series.add(juventus);
series.add(monaco);
series.add(atleticoMadrid);
options.setSeries(series);
chartView.setOptions(options);
}