You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MPAndroidChart BarChart:如何获取选中条目的分类及对应数据系列?

如何在MPAndroidChart的BarChart中获取选中条目的数据系列名称

嘿,这个问题我做项目时也碰到过!其实你已经离答案很近了——手里的Highlight对象就是关键,它藏着选中条目所属数据集的索引信息。

你可以按下面的步骤修改代码,轻松拿到inspected或failed系列名称:

  1. 从Highlight对象里用getDataSetIndex()获取数据集索引
  2. 通过索引从图表的Data对象中拿到对应的数据集
  3. 调用数据集的getLabel()方法,就能得到你设置的系列名称

修改后的完整代码示例如下:

mChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
    @Override
    public void onValueSelected(Entry e, Highlight h) {
        // 保留你原来的X轴分类名称获取逻辑
        final String xCategory = mChart.getXAxis().getValueFormatter().getFormattedValue(e.getX(), mChart.getXAxis());
        Log.i("test", "X轴分类名称: " + xCategory);
        
        // 获取选中条目所属的数据集索引
        int dataSetIndex = h.getDataSetIndex();
        // 根据索引获取对应的Bar数据集
        IBarDataSet targetDataSet = (IBarDataSet) mChart.getData().getDataSetByIndex(dataSetIndex);
        // 获取数据集的标签(也就是你定义的inspected/failed)
        String seriesName = targetDataSet.getLabel();
        Log.i("test", "所属数据系列: " + seriesName);
        
        // 这里可以继续处理你的业务逻辑
    }

    @Override
    public void onNothingSelected() {
        // 可选:处理未选中任何条目的情况
    }
});

另外要注意:创建BarDataSet时必须给每个数据集设置正确的标签,比如:

// 假设inspectedEntries是合格数据条目集合
BarDataSet inspectedDataSet = new BarDataSet(inspectedEntries, "inspected");
// failedEntries是不合格数据条目集合
BarDataSet failedDataSet = new BarDataSet(failedEntries, "failed");

// 组合成BarData并设置给图表
BarData barData = new BarData(inspectedDataSet, failedDataSet);
mChart.setData(barData);

只有这样,getLabel()才能返回你期望的inspected或failed字符串哦。

内容的提问来源于stack exchange,提问作者Geoff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:26:40