Android MPChart - как обновить StackLabel?

Я использую MPChart и имею несколько диаграмм для разных вкладок, и поэтому при переключении вкладок необходимо обновить обновленную диаграмму с накоплением и ее метку.

Код:

BarDataSet set1;

    if (chart_stacked.getData() != null && chart_stacked.getData().getDataSetCount() > 0)
    {
        set1 = (BarDataSet) chart_stacked.getData().getDataSetByIndex(0);
        set1.setValues(yVals1);
        chart_stacked.getData().notifyDataChanged();
        chart_stacked.notifyDataSetChanged();
    }
    else
    {
        // set1 = new BarDataSet(yVals1, "Toilet Statistics");
        set1 = new BarDataSet(yVals1, "");
        set1.setDrawIcons(false);
        set1.setColors(getColors());

        if (chart_type.equals("feed"))
        {
            set1.setStackLabels(new String[]{"A", "B"});
        }
        if (chart_type.equals("pump"))
        {
            set1.setStackLabels(new String[]{"C", "D"});
        }

        ArrayList<IBarDataSet> dataSets = new ArrayList<IBarDataSet>();
        dataSets.add(set1);

        BarData data = new BarData(dataSets);
        data.setValueTextColor(Color.BLACK);

        chart_stacked.setData(data);
    }
    chart_stacked.invalidate();
    Utilities.custom_toast(Stat.this, "chart type = " + chart_type, "gone", "short");

Вопрос:

Тост в конце показывает, что при нажатии на разные вкладки переменная chart type успешно обновлен. бары обновлены. Тем не менее, ярлык стека по-прежнему показывает A и B вместо C и D при нажатии на страницу C&D.

Как можно обновить этикетку стека? Спасибо.

1 ответ

Заменить это:

chart_stacked.invalidate();
Utilities.custom_toast(Stat.this, "chart type = " + chart_type, "gone", 
"short");

с:

chart_stacked.notifyDataSetChanged();
chart_stacked.invalidate();
Utilities.custom_toast(Stat.this, "chart type = " + chart_type, "gone", "short");
Другие вопросы по тегам