2016-04-12 1 views
0

Я использую график CandleStick. И мне нужно сделать последнюю свечу обновить ее близкое значение в реальном времени. Что я пробовал:Обновление записи MPAndroidChart

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(); 

код работает, если я только сохранить удаление последней записи или добавления нового но это не происходит, когда я пытаюсь заменить старую запись на новую. P.S. Если я зарегистрирую значение «измененной» записи - она ​​фактически изменена, кажется, что она нарисована со старыми пиксельными данными.

ответ

0

Я наконец выяснил, в чем проблема. В lib есть ошибка, и lib не нарисовал последнюю свечу. Он останавливается со второй до последней записи. Проблема заключается в вычислении значения «maxx» в методе drawDataSet().

Изменить

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() и недействительными().

 Смежные вопросы

  • Нет связанных вопросов^_^