我的算法有问题。我删除0上的位置,但我的数据集ddint移动为-1。然后我在第25位添加一个新条目。继续这个我的项目总是删除最后一个条目并且不停止在第25个位置添加条目。
这是代码:
private void addEntry() {
data = mChart.getData();
if (set1 == null) {
set1 = createSet();
data.addDataSet(set1);
}
int prog = 1;
for (int i = 0; i < prog; i++) {
float val = (float) (Math.random() * 2);
float high = (float) (Math.random() * 1) + 2f;
float low = (float) (Math.random() * 1) + 2f;
float open = (float) (Math.random() * 2) + 1f;
float close = (float) (Math.random() * 2) + 1f;
boolean even = i % 2 == 0;
data.addEntry(new CandleEntry(25, val + high, val - low, even ? val + open : val - open,
even ? val - close : val + close), 0);
data.notifyDataChanged();
mChart.notifyDataSetChanged();
mChart.setVisibleXRangeMaximum(25);
mChart.moveViewTo(data.getEntryCount() - 24, 2f, YAxis.AxisDependency.RIGHT);
}
}
private void removeLastEntry() {
CandleData data = mChart.getData();
if (data != null) {
ICandleDataSet set = data.getDataSetByIndex(0);
if (set != null) {
Entry e = set.getEntryForIndex(0);
data.removeEntry(e, 0);
data.notifyDataChanged();
mChart.notifyDataSetChanged();
mChart.invalidate();
}
}
}
答案 0 :(得分:1)
DataSet#getEntryForIndex(int index)
返回Entry
支持数组中第一个条目,该条目可能是也可能不是图表上具有最小Entry
值的x
。来自javadoc:
返回在values数组中给定索引处找到的Entry对象(NOT xIndex)。
我怀疑你确实想要使用以下内容:
float xMin = dataSet.getXMin();
dataSet.remove(dataSet.getEntryForXPos(xMin);
请参阅javadoc here。
但是,您的用例有点不寻常。当您删除具有最小值的Entry
时,您希望所有其他条目“向下移动”。如果您不经常这样做,那么在您执行此操作时可能更容易构建新数据集。请注意,虽然将Entry
添加到图表很容易,但Entry
的随机访问权限并删除它们的效果并不理想。请参阅the wiki
请注意,此库不正式支持从条目列表中绘制LineChart数据,而不是按条目的x位置按升序排序。以未分类的方式添加条目可能会导致正确绘制,但也可能导致意外行为。