首页 > 解决方案 > 单击条形图条目时如何获取标签图例?

问题描述

我正在尝试以下行为:
单击条形图条目时,我想获取相应的图例标签(SF Zoo 或 LA Zoo)条形图示例

构建 BarDataSet 的代码:

List<IBarDataSet> barDataSetList = new ArrayList<>();
for (Map.Entry<String, List<Float>> entry : hashMapCategorySpending.entrySet()) {
    String category = entry.getKey(); // here category is either SF Zoo or LA Zoo
    List<Float> values = entry.getValue();
    List<BarEntry> valuesConverted = convertToBarEntryArray(values); // some utility function

    BarDataSet barDataSet = new BarDataSet(valuesConverted, category); // create BarDataSet
    barDataSet.setColor(StatisticsCategoryFragment.categoryColorHashMap.getOrDefault(category, 0));
    barDataSetList.add(barDataSet);
}

/* Set data to chart */
BarData barData = new BarData(barDataSetList);
barData.setValueTextSize(12.5f);
barChart.setData(barData);

我的问题是,当覆盖setOnChartValueSelectedListener我无法转换Entry e为有用的东西时:

 barChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
            @Override
            public void onValueSelected(Entry e, Highlight h) {
                BarEntry barDataSet = (BarEntry) e; // Doesn't help at all 
                // I want to do something like e.getLegendLabel(); and it should return SF Zoo or LA Zoo
            }

            @Override
            public void onNothingSelected() {

            }
        });

标签: androidbar-chartmpandroidchart

解决方案


弄清楚了。您可以从Highlight h对象中获取信息:

String category = barChart.getLegend().getEntries()[h.getDataSetIndex()].label;

推荐阅读