2015-02-04 1 views
4

Barchart을 구현하기 위해 MPAndroidChart 라이브러리를 사용하고 있습니다. Barchart에있는 각 막대에 대한 클릭 리스너를 구현하는 방법. 클릭 한 bar 값을 표시하고 싶습니다.이 기능을 구현하려면 어떻게해야합니까?MPAndroidChart에서 Barchart의 각 막대에 대한 클릭 이벤트를 추가하는 방법은 무엇입니까?

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); 
} 

답변

6

는 mpandroidchart 라이브러리 당신은 OnChartValueSelectedListener를 구현해야

1

에서 OnChartValueSelectedListener 선물을 구현하십시오. 해당 클래스의 javadoc에 대해 here을 클릭하십시오. (MPAndroidChart 3.0.2 사용) MPAndroidChart 데모 프로젝트 here

@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() { 
} 
에서 예를 들어이있다

관련 문제