我正在使用最新版本的mpandroidchart库。我在单项活动上有2个条形图。 chart1& chart2是XML中的id(我不想使用条形图列表视图)。 chart1 cosnist Counts value& chart2包含美元价值。我已经获得了价值。但我想知道这是一个美元价值还是价值。所以我可以根据所选的图表显示吐司。
这是我的示例代码。
public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
View view;
TextView text;
switch (e.getXIndex()) {
case 0:
if (toast != null)
toast.cancel();
toast = Toast.makeText(getActivity(), "All Other Year Defectors: " +e.getVal(), Toast.LENGTH_SHORT);
view = toast.getView();
view.setBackgroundResource(R.color.all_odr_yr);
toast.setGravity(Gravity.TOP, 0, 950);
toast.show();
break;
case 1:
if (toast != null)
toast.cancel();
toast = Toast.makeText(getActivity(), "Last Year Defectors: " + e.getVal(), Toast.LENGTH_SHORT);
view = toast.getView();
view.setBackgroundResource(R.color.lst_yr_df);
toast.setGravity(Gravity.TOP, 0, 950);
toast.show();
break;
答案 0 :(得分:6)
单独使用图书馆似乎很困难而且难以实现。
但你可以做的是内联监听器并为每个图表使用一个单独的监听器,如下所示:
countChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
@Override
public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
// COUNT CHART VALUE SELECTED
}
@Override
public void onNothingSelected() { }
});
dollarChart.setOnChartValueSelectedListener(new OnChartValueSelectedListener() {
@Override
public void onValueSelected(Entry e, int dataSetIndex, Highlight h) {
// DOLLAR CHART VALUE SELECTED
}
@Override
public void onNothingSelected() { }
});
通过这种方式,您可以在不同的图表之间区分。
答案 1 :(得分:0)
如果您不想像Philip在答案中提到的那样使用内联侦听器,您可以创建一个实现onChartValueSelectedListener
的类,并使用ID识别每个图表。
private class CustomOnValueSelectedListener implements OnChartValueSelectedListener {
private int CHART_ID;
public CustomOnValueSelectedListener() {}
public CustomOnValueSelectedListener(int chart_id) {
CHART_ID = chart_id;
}
@Override
public void onValueSelected(Entry e, Highlight h) {
switch (CHART_ID) {
case PIE_CHART_ID:
break;
case BAR_CHART_ID:
break;
case LINE_CHART_ID:
break;
default:
//common code
break;
}
}
@Override
public void onNothingSelected() {
}
}
你现在可以这样做 -
pieChart.setOnChartValueSelectedListener(new CustomOnValueSelectedListener(PIE_ID));
barChart.setOnChartValueSelectedListener(new CustomOnValueSelectedListener(BAR_ID));
lineChart.setOnChartValueSelectedListener(new CustomOnValueSelectedListener(LINE_ID));
someOtherChart.setOnChartValueSelectedListener(new CustomValueSelectedListener());
其中PIE_ID
,LINE_ID
和BAR_ID
是一些独特的整数。
这样,如果您有超过3-4个图表来处理其他内联侦听器更好,您的代码会很简洁。