MPAndroidChart обновляет график каждые X входов - PullRequest
0 голосов
/ 10 мая 2018

Как обновить график динамически?

  • Начальная диаграмма.

        final LineData mLineData = mChart.getData();
    
        final ILineDataSet[] xSet = {mLineData.getDataSetByIndex(0)};
    
        final int xSetArrayItem = 0;
    
        if (xSet[xSetArrayItem] == null) {
            xSet[xSetArrayItem] = createSet("Ecg", getResources().getColor(android.R.color.holo_red_dark));
            mLineData.addDataSet(xSet[xSetArrayItem]);
        }
    
  • После этого я делаю подписку на реальные данные и помещаю их в график.

    mLineData.addEntry(new Entry(xValue++, ecgModel.getBody().getData()[i]), 0);
    
    mLineData.notifyDataChanged();
    
    // let the chart know it's data has changed
       mChart.notifyDataSetChanged();
    // limit the number of visible entries
       mChart.setVisibleXRangeMaximum(200);
    // move to the latest entry
      mChart.moveViewToX(xValue);
    
  • И проблема в том, что я не хочу прокручивать ось X.Я хочу поставить, например, 400 входов, очистить график и позволить диаграмме нарисовать новые 400 входов.

Примерно так:

       if (xValue == 400) {
           xValue = 0;
           mLineData.clearValues();
           mChart.invalidate();
         }

- Но эта очисткаграфик, но тогда ничто не рисует на графике.

1 Ответ

0 голосов
/ 10 мая 2018

попробуйте,

yVals.clear();
        xLabel.clear();
        set = new BarDataSet(yVals, "");
        ArrayList<IBarDataSet> dataSets = new ArrayList<>();
        dataSets.add(set);
        data = new BarData(dataSets);
        ArrayList<Float> count = reportPojo.getCounts();
        for (int i = 0; i < count.size(); i++) {
            float val = count.get(i);
            yVals.add(new BarEntry(i, val));
        }
        for (String label : reportPojo.getLabels()) {
            xLabel.add(label);
        }
        chart.setData(data);
        set.notifyDataSetChanged();
        chart.getData().notifyDataChanged();
        chart.notifyDataSetChanged();
        chart.invalidate();
        return set;
...