【问题标题】:MPAndroidChart Realtime LineChart jumps on addEntryMPAndroidChart Realtime LineChart 在 addEntry 上跳转
【发布时间】:2017-08-01 10:21:39
【问题描述】:

我使用MPAndroidChart 显示周期性(每 3 秒)传入的值。将值添加到主线程上的数据集,然后调用setVisibleXRangeMaximum(10),然后将视图移动到末尾,使用moveViewToX(dataSet.getEntryCount())

但是,这会导致图表稍微向左移动(大约是两个数据点之间宽度的十分之一),而不是显示最新数据。如果我在添加两个点之间滚动,视图会跳转到数据集的开头。

如何实现示例应用程序中的行为,视图一次显示 10 个条目并在添加时滚动到最新条目?

这是我初始化图表的方式:

// Initializing
v = LayoutInflater.from(parent.getContext())
        .inflate(R.layout.device_detail_element_graph, parent, false);
LineChart chart = (LineChart) v.findViewById(R.id.lineChart);

LineData lineData = new LineData();
lineData.setDrawValues(false);
chart.setDrawBorders(false);
chart.setDrawMarkers(false);
chart.getLegend().setEnabled(false);
chart.getAxisRight().setEnabled(false);
chart.setDrawGridBackground(false);
chart.setDescription(null);
chart.setData(lineData);
chart.setTouchEnabled(true);
chart.setData(lineData);
chart.notifyDataSetChanged();

以及我如何添加新数据点(定期调用):

LineData data = chart.getData();

ILineDataSet dataSet = data.getDataSetByIndex(0);

if(dataSet == null){
    dataSet = new LineDataSet(null, "Dynamic data");
    dataSet.setValueTextColor(Color.TRANSPARENT);
    dataSet.setHighlightEnabled(false);
    data.addDataSet(dataSet);
}
int  lastIndex = dataSet.getEntryCount();

dataSet.addEntry(new Entry(lastIndex, (float) newValue.getValue()));

data.notifyDataChanged();
chart.notifyDataSetChanged();
chart.setVisibleXRangeMaximum(20.0f);

chart.moveViewToX(dataSet.getEntryCount());

【问题讨论】:

    标签: android mpandroidchart


    【解决方案1】:

    知道了。当我调用向图表添加新条目的函数时,我总是在图表最终所在的RecyclerView 上调用notifyDataChanged。这以某种方式重置了图表的视图窗口,导致跳转。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      相关资源
      最近更新 更多