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