MPAndroidChart如何在删除0

时间:2017-03-18 07:49:26

标签: android mpandroidchart

我的算法有问题。我删除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();
        }
    }
}

1 个答案:

答案 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位置按升序排序。以未分类的方式添加条目可能会导致正确绘制,但也可能导致意外行为。