Как Highcharts ChartView перерисовывает или ждет данных AsyncTask в Android - PullRequest
1 голос
/ 24 апреля 2019

Я использую Highcharts для рисования графика, но, кажется, нужно инициализировать в начале

не могу дождаться моей рыбы AsyncTask.

Я также пытаюсь нарисовать пустой график, а затем AsyncTask завершил сброс опции, которая не работает.

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

        new Plot().execute("HT5-2","10");
        chartView = findViewById(R.id.hc);
        chartView.setOptions(draw());

    }
public  HIOptions draw(){
        HIOptions options = new HIOptions();

        HIChart chart = new HIChart();
        chart.setZoomType("xy");
        options.setChart(chart);

        HITitle title = new HITitle();
        title.setText("Average Monthly Temperature and Rainfall in Tokyo");
        options.setTitle(title);

        HISubtitle subtitle = new HISubtitle();
        subtitle.setText("Source: WorldClimate.com");

        HIXAxis xaxis = new HIXAxis();
        xaxis.setCategories(new ArrayList<>(Arrays.asList("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")));
        xaxis.setCrosshair(new HICrosshair());
        options.setXAxis(new ArrayList<>(Collections.singletonList(xaxis)));

        HIYAxis yaxis1 = new HIYAxis();
        yaxis1.setLabels(new HILabels());
        yaxis1.getLabels().setFormat("{value}°C");
        yaxis1.getLabels().setStyle(new HICSSObject());
        yaxis1.getLabels().getStyle().setColor("#434348");
        yaxis1.setTitle(new HITitle());
        yaxis1.getTitle().setText("Temperature");
        yaxis1.getTitle().setStyle(new HICSSObject());
        yaxis1.getTitle().getStyle().setColor("#434348");

        HIYAxis yaxis2 = new HIYAxis();
        yaxis2.setLabels(new HILabels());
        yaxis2.getLabels().setFormat("{value}rh");
        yaxis2.getLabels().setStyle(new HICSSObject());
        yaxis2.getLabels().getStyle().setColor("#7cb5ec");
        yaxis2.setTitle(new HITitle());
        yaxis2.getTitle().setText("Rainfall");
        yaxis2.getTitle().setStyle(new HICSSObject());
        yaxis2.getTitle().getStyle().setColor("#7cb5ec");
        yaxis2.setOpposite(true);

        options.setYAxis(new ArrayList<>(Arrays.asList(yaxis1, yaxis2)));

        HITooltip tooltip = new HITooltip();
        tooltip.setShared(true);
        options.setTooltip(tooltip);

        HILegend legend = new HILegend();
        legend.setLayout("vertical");
        legend.setAlign("left");
        legend.setX(120);
        legend.setVerticalAlign("top");
        legend.setY(100);
        legend.setFloating(true);
        legend.setBackgroundColor(HIColor.initWithHexValue("FFFFFF"));
        options.setLegend(legend);

        HIColumn column = new HIColumn();
        column.setName("humidity");
        column.setYAxis(1);
        Number[] columnData = new Number[] {49.9, 61.5, 26.4, 29.2, 44, 56, 35.6, 48.5, 46.4, 44.1, 65.6, 54.4 };
        column.setData(new ArrayList<>(Arrays.asList(columnData)));
        column.setTooltip(new HITooltip());
        column.getTooltip().setValueSuffix("rh");

        HISpline spline = new HISpline();
        spline.setName("Temperature");
        Number[] splineData = new Number[] { 7, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6 };
        spline.setData(new ArrayList<>(Arrays.asList(splineData)));
        spline.setTooltip(new HITooltip());
        spline.getTooltip().setValueSuffix("°C");





        options.setSeries(new ArrayList<>(Arrays.asList(column, spline)));

        return options;
    }

  1. только макет имеет HIChartView -> java.util.NoSuchElementException: HIOptions не найдены в HIChartView

  2. после инициализации AsyncTask -> java.util.NoSuchElementException: HIOptions не найдены в HIChartView

  3. onCreate инициализировать параметр сброса AsyncTask -> ничего не происходит

Мне нужно, когда я получу данные, затем нарисую диаграмму.

Как это сделать?

1 Ответ

0 голосов
/ 24 апреля 2019

Вы должны установить параметры диаграммы:

HIChartView chartView = findViewById(R.id.hc);
HIOptions options = new HIOptions();
//set up your options
chartView.setOptions(options);

Проверьте эти проблемы на github:

...