ArrayList <string>无法转换为IBarDataSet

时间:2016-08-17 11:01:59

标签: android android-studio bar-chart mpandroidchart

我在使用BarData时遇到问题。我的代码显示错误:

BarData Data = new BarData(Date,depenses);

我只想在每个栏下显示日期。

我的代码是..

public class statistique extends AppCompatActivity {

BarChart barChart;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_statistique);


    barChart = (BarChart)findViewById(R.id.stats_chart);

    ArrayList<BarEntry> entries = new ArrayList<>();
    entries.add(new BarEntry(4f, 0));
    entries.add(new BarEntry(8f, 1));
    entries.add(new BarEntry(6f, 2));
    entries.add(new BarEntry(12f, 3));
    entries.add(new BarEntry(18f, 4));
    entries.add(new BarEntry(9f, 5));


    BarDataSet depenses = new BarDataSet(entries, "depenses");

    ArrayList<String> Date = new ArrayList<>();
    Date.add("2/7/2016");
    Date.add("3/7/2016");
    Date.add("5/7/2016");
    Date.add("6/7/2016");
    Date.add("23/7/2016");
    Date.add("30/7/2016");


    BarData Data = new BarData(Date,depenses);
    barChart.setData(Data);

    barChart.setTouchEnabled(true);
    barChart.setDragEnabled(true);
    barChart.setScaleEnabled(true);
    barChart.animateXY(3000, 3000);
    barChart.setHorizontalScrollBarEnabled(true);
    barChart.setDoubleTapToZoomEnabled(true);
    barChart.setDescription("Dépenses");
    depenses.setColors(ColorTemplate.COLORFUL_COLORS);



}
}

3 个答案:

答案 0 :(得分:1)

您使用的是哪个版本的库。新的v3.0的工作方式略有不同。如果您使用任何v2版本,以下将适用。该错误误导您需要将您的DataSet投射到IBarData集,并且它需要是我认为的列表。

这对你有用。

ArrayList<IBarDataSet> dataSets = new ArrayList<>();
dataSets.add((IBarDataSet) depenses);
BarData Data = new BarData(Date, dataSets);

如果您正在使用新版本3库,则需要以不同方式设置XAxis。在这种情况下,您只需传递

ArrayList<IBarDataSet> dataSets = new ArrayList<>();
dataSets.add((IBarDataSet) depenses);
BarData Data = new BarData(dataSets);

然后您需要设置XAxis。

    IAxisValueFormatter formatter = new IAxisValueFormatter() {

        @Override
        public String getFormattedValue(float value, AxisBase axis) {
            return Date.get((int)value);
        }

        // we don't draw numbers, so no decimal digits needed
        @Override
        public int getDecimalDigits() {  return 0; }
     };

XAxis xAxis = barChart.getXAxis();
xAxis.setGranularity(1f); // minimum axis-step (interval) is 1
xAxis.setValueFormatter(formatter);

答案 1 :(得分:1)

implementation 'com.github.PhilJay:MPAndroidChart:3.0.3'

List<BarEntry> grafdata = new ArrayList<>();

创建方法:

     public void barchardata(){      

    grafdata.add(new BarEntry( 0, Math.round(Float.valueOf(5.5f))));

    grafdata.add(new BarEntry( 1, Math.round(Float.valueOf(1.5f))));

    grafdata.add(new BarEntry( 2, Math.round(Float.valueOf(7.5f))));

    grafdata.add(new BarEntry( 3, Math.round(Float.valueOf(4.5f))));

    grafdata.add(new BarEntry( 4, Math.round(Float.valueOf(3.5f))));

    InitilizationBarChart();
}
 private void InitilizationBarChart() {

        BarDataSet bardataset = new BarDataSet(grafdata, "");

        barChartView.animateY(2000);

        BarData data = new BarData(bardataset);
        bardataset.setColors(ColorTemplate.COLORFUL_COLORS);
        bardataset.setValueTextColor(Color.GREEN);

        barChartView.getAxisLeft().setTextColor(this.getResources().getColor(R.color.green));
        barChartView.getXAxis().setTextColor(this.getResources().getColor(R.color.green));
        barChartView.getAxisRight().setDrawGridLines(false);
        barChartView.getAxisLeft().setDrawGridLines(false);
        barChartView.getXAxis().setDrawGridLines(false);
        barChartView.getLegend().setTextColor(this.getResources().getColor(R.color.green));
        barChartView.setData(data);


        final XAxis xAxis = barChartView.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        xAxis.setDrawGridLines(false);
        xAxis.setValueFormatter(new IndexAxisValueFormatter(){
            @Override
            public String getFormattedValue(float value, AxisBase axis) {
                return getXAxisValues().get((int) value);
            }
        });

        barChartView.getAxisRight().setEnabled(false);
        xAxis.setGranularityEnabled(true);


    }

初始化名称:

    private List<String> getXAxisValues() {
    ArrayList<String> xAxis = new ArrayList<>();
    UserNameList.clear();

    UserNameList.add("Rampal");

    UserNameList.add("sonu");

    UserNameList.add("Amber");

    UserNameList.add("Viresh");

    UserNameList.add("Pal");

    return UserNameList;
}

答案 2 :(得分:0)

您可以这样做:

 barChart = (BarChart)findViewById(R.id.stats_chart);

    ArrayList<BarEntry> entries = new ArrayList<>();
    entries.add(new BarEntry(4f, 0));
    entries.add(new BarEntry(8f, 1));
    entries.add(new BarEntry(6f, 2));
    entries.add(new BarEntry(12f, 3));
    entries.add(new BarEntry(18f, 4));
    entries.add(new BarEntry(9f, 5));




    ArrayList<String> Date = new ArrayList<>();
    Date.add("2/7/2016");
    Date.add("3/7/2016");
    Date.add("5/7/2016");
    Date.add("6/7/2016");
    Date.add("23/7/2016");
    Date.add("30/7/2016");



    barChart.setTouchEnabled(true);
    barChart.setDragEnabled(true);
    barChart.setScaleEnabled(true);
    barChart.animateXY(3000, 3000);
    barChart.setHorizontalScrollBarEnabled(true);
    barChart.setDoubleTapToZoomEnabled(true);
    barChart.setDescription("Dépenses");
    depenses.setColors(ColorTemplate.COLORFUL_COLORS);
  ArrayList<IBarDataSet> dataSets = null;

    BarDataSet barDataSet1 = new BarDataSet(entries "your title");
     dataSets=new ArrayList<>();
dataSets.add(barDataSet)

 BarData Data = new BarData(Date,barDataSet1);
    barChart.setData(Data);