java .util.NoSuchElementException: HIOptions не найдены в HIChartView при объединении Highcharts с Volley - PullRequest
0 голосов
/ 20 марта 2020

Я бы хотел, чтобы мое приложение 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);


}
...