MPAndroidChart BarChart:如何获取选中条目的分类及对应数据系列?
如何在MPAndroidChart的BarChart中获取选中条目的数据系列名称
嘿,这个问题我做项目时也碰到过!其实你已经离答案很近了——手里的Highlight对象就是关键,它藏着选中条目所属数据集的索引信息。
你可以按下面的步骤修改代码,轻松拿到inspected或failed系列名称:
- 从
Highlight对象里用getDataSetIndex()获取数据集索引 - 通过索引从图表的
Data对象中拿到对应的数据集 - 调用数据集的
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
相关产品推荐
相关产品推荐

