android - 单击条形图条目时如何获取标签图例?
问题描述
我正在尝试以下行为:
单击条形图条目时,我想获取相应的图例标签(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() {
}
});
解决方案
弄清楚了。您可以从Highlight h
对象中获取信息:
String category = barChart.getLegend().getEntries()[h.getDataSetIndex()].label;
推荐阅读
- arrays - 通过 VBA 将工作表添加到数组
- active-directory - Kerberos 新用户凭证流
- bash - Shell 脚本:仅在第一次出现指定模式后才在文件中插入多行。(图案出现多次)
- python - 使用 np.random.choice() 的样本数据
- r - 我设计的函数没有循环输入序列(x)。它只返回第一个序列的输出
- active-directory - Active Directory - 属性上的 systemFlags 值
- visual-studio - 检查二进制文件是否处于控制流保护之下
- python - 如何在不关闭资源的情况下离开“with”块?
- html - 特定移动设备的媒体查询问题
- python - 在 docker 中运行烧瓶和 golang 服务器