更新条目MPAndroidChart

时间:2016-04-12 13:07:24

标签: android mpandroidchart

我使用CandleStick图表。我需要让最后一根蜡烛实时更新其近似值。 我尝试了什么:

CandleEntry lastEntry = getCandleData().getDataSetByIndex(0).getEntryForXIndex(candleDataSetEntryCount);
lastEntry.setClose(newClose);
getCandleData().notifyDataChanged();
notifyDataSetChanged();
invalidate();

或者     (试图删除最后一个条目并添加一个新条目而不是它)

getCandleData().getDataSetByIndex(0).removeLast();
getCandleData().notifyDataChanged();
notifyDataSetChanged();

getCandleData().addXValue("0");
getCandleData().addEntry(new CandleEntry(getCandleData().getDataSetByIndex(0).getEntryCount(), oldHigh, oldLow, oldOpen, newClose), 0);
notifyDataSetChanged();
invalidate();

如果我只是继续删除最后一个条目或添加一个新条目,代码就可以工作,但是当我尝试用新条目替换旧条目时它不会。 附:如果我记录'已更改'条目的值 - 它实际上已更改,似乎是使用旧像素数据绘制的。

1 个答案:

答案 0 :(得分:0)

我终于找到了问题所在。 lib中有一个bug,lib不会绘制最后一个蜡烛。它在第二个到最后一个条目停止。 问题在于计算方法drawDataSet()中的'maxx'值。

更改

while ( maxx < entries.size() -1 && entries.get(maxx).getXIndex() < mMaxDisplayedIndex+1 ) maxx++;

while ( maxx <= entries.size() -1 && entries.get(maxx).getXIndex() <= mMaxDisplayedIndex+1 ) maxx++;

在此之后,图表绘制最后一个条目,您可以轻松访问最后一个条目,更改它的值,调用notifyDataSetChanged()和invalidate()。