0

私は単純な方法に実装しました:

@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);
    }
}

起動時に、月曜日、火曜日、水曜日、木曜日、金曜日、土曜日、日曜日の 7 つの異なるデータセットを追加します。データセットの追加と削除は、データセットの最初の位置にある日 (この場合は月曜日) を除くすべての日に機能します。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 を受け入れないのはなぜですか?

4

1 に答える 1

1

これはすでに修正されています。ライブラリの最新バージョンを使用します。

これを参照してください: https://github.com/PhilJay/MPAndroidChart/issues/255

2014 年 12 月 16 日以降に修正されました。

于 2015-02-22T15:29:55.957 に答える