使用aChartEngine使条形图条形图可单击

时间:2014-07-14 07:58:26

标签: java android graph charts

使用此代码使用aChart Engine显示条形图...现在我想将点击或触摸事件添加到图表的单个栏...但是没有Onclick或Ontouch事件...可以任何人帮我设置Click listner到吧......

public class BarGraph {

    public Intent getIntent(Context context) {

        int y[] = { 25, 10, 15, 20 };

        CategorySeries series = new CategorySeries("Bar1");
        for (int i = 0; i < y.length; i++) {
            series.add("Bar" + (i + 1), y[i]);
        }

        XYMultipleSeriesDataset dataSet = new XYMultipleSeriesDataset(); // collection
                                                                            // of
                                                                            // series
                                                                            // under
                                                                            // one
                                                                            // object.,there
                                                                            // could
                                                                            // any
        dataSet.addSeries(series.toXYSeries()); // number of series

        // customization of the chart

        XYSeriesRenderer renderer = new XYSeriesRenderer(); // one renderer for
                                                            // one series
        renderer.setColor(Color.RED);
        renderer.setDisplayChartValues(true);
        renderer.setChartValuesSpacing((float) 5.5d);
        renderer.setLineWidth((float) 10.5d);

        XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); // collection
                                                                                // multiple
                                                                                // values
                                                                                // for
                                                                                // one
                                                                                // renderer
                                                                                // or
                                                                                // series
        mRenderer.addSeriesRenderer(renderer);
        mRenderer.setChartTitle("Demo Graph");
        // mRenderer.setXTitle("xValues");
        mRenderer.setYTitle("Rupee");
        mRenderer.setZoomButtonsVisible(true);
        mRenderer.setShowLegend(true);
        mRenderer.setShowGridX(true); // this will show the grid in graph
        mRenderer.setShowGridY(true);
        // mRenderer.setAntialiasing(true);
        mRenderer.setBarSpacing(.5); // adding spacing between the line or
                                        // stacks
        mRenderer.setApplyBackgroundColor(true);
        mRenderer.setBackgroundColor(Color.BLACK);
        mRenderer.setXAxisMin(0);
        // mRenderer.setYAxisMin(.5);
        mRenderer.setXAxisMax(5);
        mRenderer.setYAxisMax(50);
        //
        mRenderer.setXLabels(0);
        mRenderer.addXTextLabel(1, "Income");
        mRenderer.addXTextLabel(2, "Saving");
        mRenderer.addXTextLabel(3, "Expenditure");
        mRenderer.addXTextLabel(4, "NetIncome");
        mRenderer.setPanEnabled(true, true);
        mRenderer.setClickEnabled(true);

        // mRenderer

        // will fix the chart position
        Intent intent = ChartFactory.getBarChartIntent(context, dat`enter code here`aSet,
                mRenderer, Type.DEFAULT);

        return intent;
    }

}

要获得ClickListner,我已尝试使用以下代码....

ChartFactory.getBarChartView(context, dataSet, mRenderer,Type.DEFAULT).setOnClickListener(new OnClickListener() {

             @Override
             public void onClick(View v) {
             // TODO Auto-generated method stub
             Log.d("============view", "Onclick");

             }
             });

然后事件没有发生......

1 个答案:

答案 0 :(得分:1)

刚出现同样的问题,所以我想我知道你在哪里。

你需要在你的onClick方法中使用这一行,它可以让你控制选定的bar或dataPoint(取决于图表的类型):

SeriesSelection seriesSelection = chartView.getCurrentSeriesAndPoint();

其中chartView是您的GraphicalView元素。

现在您已经从图表中选择了元素,并且您有机会根据自己的需要使用它。

好的做法是检查是否为空,这意味着您已经点击了图表上的空白区域。例如:

if (seriesSelection == null) {
    // do something or not
} else {
    // do something cool
}

您可以使用以下方法访问点击字段的数据:

seriesSelection.getSeriesIndex() // in case you have more than one series
seriesSelection.getPointIndex()  // gets place in a series 
seriesSelection.getValue()       // gets value for Y axis
seriesSelection.getXValue()      // gets value of X axis

希望这有帮助!