2016-05-13 110 views
2

我正在嘗試製作一個條形圖,這將是特定計算編號的結果,但是當我將其放入我的代碼時,它會出現錯誤: 問題出在兩顆星之間getDataSet()和錯誤味精是不能決心構造BarData(java.util.ArrayListjava.util.ArrayList.com.gethub mikefil.charting.Data.BarDataSet)無法解析構造函數bardata

package com.example.firas.ti; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.graphics.Color; 
import com.github.mikephil.charting.charts.BarChart; 
import com.github.mikephil.charting.data.BarData; 
import com.github.mikephil.charting.data.BarDataSet; 
import com.github.mikephil.charting.data.BarEntry; 
import com.github.mikephil.charting.interfaces.datasets.IBarDataSet; 
import com.github.mikephil.charting.utils.ColorTemplate; 
import java.util.ArrayList; 


public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     BarChart chart = (BarChart) findViewById(R.id.chart); 
     BarData data = new BarData(getXAxisValues(), **getDataSet()**); 
     chart.setData(data); 
     chart.setDescription("My Chart"); 
     chart.animateXY(2000, 2000); 
     chart.invalidate(); 
    } 

    private ArrayList<BarDataSet> getDataSet() { 
     ArrayList<BarDataSet> dataSets = null; 
     ArrayList<BarEntry> valueSet1 = new ArrayList<>(); 
     BarEntry v1e1 = new BarEntry(110.000f, 0); // Jan 
     valueSet1.add(v1e1); 
     BarEntry v1e2 = new BarEntry(40.000f, 1); // Feb 
     valueSet1.add(v1e2); 
     BarEntry v1e3 = new BarEntry(60.000f, 2); // Mar 
     valueSet1.add(v1e3); 
     BarEntry v1e4 = new BarEntry(30.000f, 3); // Apr 
     valueSet1.add(v1e4); 
     BarEntry v1e5 = new BarEntry(90.000f, 4); // May 
     valueSet1.add(v1e5); 
     BarEntry v1e6 = new BarEntry(100.000f, 5); // Jun 
     valueSet1.add(v1e6); 

     ArrayList<BarEntry> valueSet2 = new ArrayList<>(); 
     BarEntry v2e1 = new BarEntry(150.000f, 0); // Jan 
     valueSet2.add(v2e1); 
     BarEntry v2e2 = new BarEntry(90.000f, 1); // Feb 
     valueSet2.add(v2e2); 
     BarEntry v2e3 = new BarEntry(120.000f, 2); // Mar 
     valueSet2.add(v2e3); 
     BarEntry v2e4 = new BarEntry(60.000f, 3); // Apr 
     valueSet2.add(v2e4); 
     BarEntry v2e5 = new BarEntry(20.000f, 4); // May 
     valueSet2.add(v2e5); 
     BarEntry v2e6 = new BarEntry(80.000f, 5); // Jun 
     valueSet2.add(v2e6); 

     BarDataSet barDataSet1 = new BarDataSet(valueSet1, "Brand 1"); 
     barDataSet1.setColor(Color.rgb(0, 155, 0)); 
     BarDataSet barDataSet2 = new BarDataSet(valueSet2, "Brand 2"); 
     barDataSet2.setColors(ColorTemplate.COLORFUL_COLORS); 

     dataSets = new ArrayList<>(); 
     dataSets.add(barDataSet1); 
     dataSets.add(barDataSet2); 
     return dataSets; 
    } 

    private ArrayList<String> getXAxisValues() { 
     ArrayList<String> xAxis = new ArrayList<>(); 
     xAxis.add("JAN"); 
     xAxis.add("FEB"); 
     xAxis.add("MAR"); 
     xAxis.add("APR"); 
     xAxis.add("MAY"); 
     xAxis.add("JUN"); 
     return xAxis; 
    } 

} 
+0

您沒有向我們展示BarData類中的構造函數。 – csmckelvey

回答

0

只要改變這一點:

private ArrayList<BarDataSet> getDataSet() { 
    ArrayList<BarDataSet> dataSets = null; 

這樣:

private ArrayList<IBarDataSet> getDataSet() { 
    ArrayList<IBarDataSet> dataSets = null; 

而且它的更好聲明變量時使用的接口,而不是具體的實現,例如,而不是這樣的:

ArrayList<Object> list = new ArrayList<Object>(); 

您使用此:

List<Object> list = new ArrayList<Object>(); 

與方法返回類型相同。查閱相關stackoverflow post瞭解更多信息

+0

謝謝@ R.Kirill它工作得很好 – Firas

+1

@Firas請考慮接受我的答案,如果它有幫助:) – x0r

0

下面的線

compile 'com.github.PhilJay:MPAndroidChart:v3.0.2' 

只要改變這一個

compile 'com.github.PhilJay:MPAndroidChart:v2.2.4' 

build.gradle

相關問題