MPAndroidChart删除数据集问题

时间:2015-02-22 12:57:25

标签: android mpandroidchart

我已经实现了简单的方法:

@Override
protected void addDataSet(int day) {
    LineData lineData = this.lineChart.getData();

    if(lineData != null) {
        ArrayList<Entry> yValues = new ArrayList<Entry>();

        for(int i = 0; i < this.measureDataListEntries.size(); i++) {
            String stringValue = this.measureDataListEntries.get(i).getValue();
            int dayOfWeek = Helper.getDayOfWeek(this.measureDataListEntries.get(i).getTime());
            float value = Float.parseFloat(stringValue);

            if(dayOfWeek == day) {
                yValues.add(new Entry(value, i));
            }
        }

        String label = this.getLabel(day);
        int color = this.getColor(day);

        LineDataSet lineDataSet = new LineDataSet(yValues, label);
        lineDataSet.setColor(color);
        lineDataSet.setCircleColor(color);
        lineDataSet.setLineWidth(1f);
        lineDataSet.setCircleSize(4f);
        lineDataSet.setFillAlpha(65);

        lineData.addDataSet(lineDataSet);

        this.lineChart.notifyDataSetChanged();
        this.lineChart.invalidate(); 
        this.lineChart.animateX(1000);

        if(yValues.size() > 0) {
            this.getCheckBox(day).setEnabled(true);
        }
    }
}

@Override
protected void removeDataSet(int day) {
    LineData lineData = this.lineChart.getData();

    if(lineData != null) {
        String label = this.getLabel(day);

        lineData.removeDataSet(lineData.getDataSetByLabel(label, true));

        this.lineChart.notifyDataSetChanged();
        this.lineChart.invalidate(); 
        this.lineChart.animateX(1000);
    }
}

在启动时,我添加了七个不同的数据集:星期一,星期二,星期三,星期四,星期五,星期六,星期日。数据集的添加和删除适用于除数据集第一个位置的日期之外的所有日期,在这种情况下,它是星期一。 remove方法被正确调用,但数据集不会被删除。总是添加作品。

只能移除第一个位置的数据集

有解决方法吗?

修改

用于从MPAndroidChart删除的代码如下:

public T getDataSetByLabel(String label, boolean ignorecase) {

    int index = getDataSetIndexByLabel(mDataSets, label, ignorecase);

    if (index <= 0 || index >= mDataSets.size())
        return null;
    else
        return mDataSets.get(index);
}

为什么有<= 0而不只是< 0

当然在第一个位置添加一个虚拟数据集会使它工作,但我从来不是这种丑陋编码的朋友。为什么不接受index = 0进行deliting?

1 个答案:

答案 0 :(得分:1)

这已经修复了。 使用库的最新版本

请参阅:https://github.com/PhilJay/MPAndroidChart/issues/255

自2014年12月16日起修复。