在MPAndroidChart中,如何为条形图中的每个条形添加单击事件?

在MPAndroidChart中,如何为条形图中的每个条形添加单击事件?,android,mpandroidchart,Android,Mpandroidchart,我正在使用MPAndroidChart库实现条形图,如何为条形图中的每个条形图实现单击侦听器。我想在Toast中显示单击的条形图值。如何实现此功能 mChart = (BarChart) findViewById(R.id.chart1); mChart.setDrawYValues(true); mChart.setDrawValueAboveBar(true); mChart.setDescription(""); mChart.setMaxVisibleValueCount(10); mC

我正在使用MPAndroidChart库实现
条形图
,如何为
条形图
中的每个条形图实现单击侦听器。我想在Toast中显示单击的
条形图
值。如何实现此功能

mChart = (BarChart) findViewById(R.id.chart1);
mChart.setDrawYValues(true);
mChart.setDrawValueAboveBar(true);
mChart.setDescription("");
mChart.setMaxVisibleValueCount(10);
mChart.set3DEnabled(false);

mChart.setPinchZoom(false);
mChart.setUnit(" mg/dL");
mChart.setDrawGridBackground(false);
mChart.setDrawHorizontalGrid(true);
mChart.setDrawVerticalGrid(false);
mChart.setValueTextSize(10f);
mChart.setDrawBorder(false);


XLabels xl = mChart.getXLabels();
xl.setPosition(XLabelPosition.BOTTOM);
xl.setSpaceBetweenLabels(10);
xl.setCenterXLabelText(true);

YLabels yl = mChart.getYLabels();
yl.setLabelCount(8);
yl.setPosition(YLabelPosition.LEFT);

setData();

Legend l = mChart.getLegend();
l.setPosition(LegendPosition.BELOW_CHART_RIGHT);
l.setFormSize(8f);
l.setXEntrySpace(4f);

mChart.animateY(3000);


private void setData() {

    ArrayList<String> xVals = new ArrayList<String>();
    xVals.add("F");
    xVals.add("PP");
    xVals.add("U");
    xVals.add("C");
    xVals.add("TC");
    xVals.add("Tri");
    xVals.add("HDL");
    xVals.add("LDL");
    xVals.add("VLDL");

    ArrayList<BarEntry> yVals1 = new ArrayList<BarEntry>();
    yVals1.add(new BarEntry(95, 0));
    yVals1.add(new BarEntry(99, 1));
    yVals1.add(new BarEntry(19, 2));
    yVals1.add(new BarEntry((float) 1.21, 3));
    yVals1.add(new BarEntry(250, 4));
    yVals1.add(new BarEntry(323, 5));
    yVals1.add(new BarEntry(47, 6));
    yVals1.add(new BarEntry(135, 7));
    yVals1.add(new BarEntry(68, 8));


    BarDataSet set1 = new BarDataSet(yVals1, "");
    //set1.setColors(ColorTemplate.VORDIPLOM_COLORS);
    set1.setColors(new int[]{R.color.green,R.color.green,R.color.green,R.color.green,R.color.margin,R.color.red,R.color.green,R.color.green,R.color.green},getApplicationContext());
    set1.setBarSpacePercent(50f);

    ArrayList<BarDataSet> dataSets = new ArrayList<BarDataSet>();
    dataSets.add(set1);

    BarData data = new BarData(xVals, dataSets);

    mChart.setData(data);
}
mChart=(条形图)findViewById(R.id.chart1);
mChart.setDrawyValue(真);
mChart.SetDrawValueUpperBar(真实);
mChart.setDescription(“”);
mChart.setMaxVisibleValueCount(10);
mChart.set3DEnabled(假);
mChart.setPinchZoom(假);
mChart.设定单位(“mg/dL”);
mChart.setDrawGridBackground(假);
mChart.setDrawHorizontalGrid(真);
mChart.setDrawVerticalGrid(假);
mChart.setValueTextSize(10f);
mChart.setDrawBorder(假);
XLabels xl=mChart.getXLabels();
xl.设置位置(XLabelPosition.底部);
xl.标签之间的设置空间(10);
xl.setCenterXLabelText(真);
YLabels yl=mChart.getYLabels();
yl.setLabelCount(8);
yl.设置位置(YLabelPosition.左);
setData();
图例l=mChart.getLegend();
l、 设置位置(右图下方的LegendPosition);
l、 setFormSize(8f);
l、 setXEntrySpace(4f);
麦克哈特·阿尼泰(3000);
私有void setData(){
ArrayList xVals=新的ArrayList();
xVals.添加(“F”);
xVals.添加(“PP”);
xVals.添加(“U”);
xVals.添加(“C”);
xVals.添加(“TC”);
xVals.添加(“Tri”);
xVals.add(“HDL”);
xVals.添加(“LDL”);
xVals.add(“VLDL”);
ArrayList yVals1=新的ArrayList();
yVals1.add(新巴伦特里(95,0));
yVals1.添加(新巴伦特里(99,1));
yVals1.添加(新巴伦特里(19,2));
yVals1.添加(新巴伦特里((浮动)1.21,3));
yVals1.添加(新巴伦特里(250,4));
yVals1.添加(新巴伦特里(323,5));
yVals1.添加(新巴伦特里(47,6));
yVals1.添加(新巴伦特里(135,7));
yVals1.添加(新巴伦特里(68,8));
BarDataSet set1=新的BarDataSet(yVals1,“”);
//set1.setColors(ColorTemplate.VORDIPLOM_COLORS);
set1.setColors(新int[]{R.color.green,R.color.green,R.color.green,R.color.green,R.color.margin,R.color.red,R.color.green,R.color.green},getApplicationContext());
设置1.百分之五十(50华氏度);
ArrayList数据集=新的ArrayList();
数据集.add(set1);
BarData数据=新的BarData(xVAL,数据集);
mChart.setData(数据);
}

尝试实现mpandroidchart库中的OnChartValueSelectedListener您需要实现
OnChartValueSelectedListener
。单击以获取该类的javadoc

有一个来自MPAndroidChart演示项目的示例(使用MPAndroidChart 3.0.2)


请解释你的代码。什么是xIndex和数据集索引。
@Override
public void onValueSelected(Entry e, Highlight h) {
    Log.i("VAL SELECTED",
            "Value: " + e.getY() + ", xIndex: " + e.getX()
                    + ", DataSet index: " + h.getDataSetIndex());
}

@Override
public void onNothingSelected() {
}