2016-04-12 15 views
0

私はキャンドルスティックチャートを使用します。最後のろうそくをリアルタイムで近づけるようにする必要があります。更新エントリ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.P.変更されたエントリの値をログに記録すると、実際には変更されますが、古いピクセルデータで描画されたようです。

答えて

0

私は最終的に何が問題であるかを見つけました。 libにバグがあり、libは最後のキャンドルを描画しません。 2番目から最後のエントリで停止します。 問題は、メソッド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を(呼び出し)と(無効にすることができます。

関連する問題