2016-04-12 3 views
0

Ich benutze CandleStick-Diagramm. Und ich muss die letzte Kerze in Echtzeit aktualisieren. Was ich versuchte:Eintrag aktualisieren MPAndroidChart

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

Oder (versuchte letzten Eintrag zu entfernen und einen neuen, anstatt sie hinzufügen)

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

Der Code funktioniert, wenn ich nur die letzten Eintrag halten zu löschen oder einen neues Hinzufügen Eintrag, aber es nicht, wenn ich versuche, alten Eintrag durch einen neuen zu ersetzen. P.S. Wenn ich den Wert des "geänderten" Eintrags protokolliere, wird er tatsächlich geändert, so als ob er mit den alten Pixeldaten gezeichnet wäre.

Antwort

0

Ich habe endlich herausgefunden, was das Problem war. Es gibt einen Fehler in der lib und die lib zeichnet nicht die letzte Kerze. Es stoppt beim vorletzten Eintrag. Das Problem besteht darin, den Wert 'maxx' in der Methode drawDataSet() zu berechnen.

ändern

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

zu

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

Nach diesem Diagramm den letzten Eintrag zieht und Sie können den letzten Eintrag leicht zugänglich machen, ändern Sie Werte ist, rufen notifyDataSetChanged() und ungültig machen().