MPAndroid не показывает круговую диаграмму

Я хочу отобразить круговую диаграмму, используя данные из sqlite. Я выношу данные в список, чтобы иметь записи для круговой диаграммы. Но, кажется, что-то не так с кодом, и я не знаю, что с ним не так.Ниже приведен код.

public class chart extends Activity {

SQLiteDatabase SQ;

@Override
protected void onCreate (Bundle savedInstanceState){
…
    //add data
    addData();

    //customize legends
    Legend l=mChart.getLegend();
    l.setPosition(Legend.LegendPosition.RIGHT_OF_CHART);
    l.setXEntrySpace(7);
    l.setYEntrySpace(5);

}

public ArrayList<String> queryXData(){
    ArrayList<String> xNewData = new ArrayList<String>();
    String query="SELECT "+ TableInfo.APPLIANCE +" FROM "+TableInfo.TABLE_NAME;
    Cursor cursor = SQ.rawQuery(query,null);
    for(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()){
        xNewData.add(cursor.getString(0));
    }
    cursor.close();
    return xNewData;
}

public ArrayList<Integer> queryYData(){
    ArrayList<Integer> yNewData= new ArrayList<Integer>();
    String query="SELECT "+ TableInfo.POWER_USED +" FROM "+TableInfo.TABLE_NAME;
    Cursor cursor=SQ.rawQuery(query,null);
    for(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()){
        yNewData.add(cursor.getInt(5));
    }
    cursor.close();
    return yNewData;
}

private void addData() {
    ArrayList<Entry> yVals = new ArrayList<Entry>();

    for (int i = 0; i < queryYData().size(); i++)
        yVals.add(new Entry(queryYData().get(i), i));

    ArrayList<String> xVals = new ArrayList<String>();

    for (int i = 0; i < queryXData().size(); i++)
        xVals.add(queryXData().get(i));

    //create pie data set
    PieDataSet dataSet=new PieDataSet(yVals,"Appliances");
    dataSet.setSliceSpace(3); // space between each arc slice
    dataSet.setSelectionShift(5);

    //add many colors
    ArrayList<Integer> colors=new ArrayList<Integer>();

    for(int c: ColorTemplate.VORDIPLOM_COLORS)
        colors.add(c);
    for(int c: ColorTemplate.JOYFUL_COLORS)
        colors.add(c);
    for(int c: ColorTemplate.COLORFUL_COLORS)
        colors.add(c);
    for(int c: ColorTemplate.LIBERTY_COLORS)
        colors.add(c);
    for(int c: ColorTemplate.PASTEL_COLORS)
        colors.add(c);
    colors.add(ColorTemplate.getHoloBlue());
    dataSet.setColors(colors);

    //instantiate pie data object now
    PieData data=new PieData(xVals, dataSet);
    data.setValueFormatter(new PercentFormatter());
    data.setValueTextSize(11f);
    data.setValueTextColor(Color.GRAY);

    mChart.setData(data);

    //undo all highlights
    mChart.highlightValues(null);

    //update pie chart
    mChart.invalidate();

    //demo start
}

}

Aboce это код, который я пытался , но есть ошибки, в основном

таблица.queryYData (chart.java: 100) Cursor cursor=SQ.rawQuery(query,null);
таблица.addData (chart.java: 111) for (int i = 0; i < queryYData().size(); i++)
таблица.onCreate (chart.java: 76) addData();

Эти ошибки сделали приложение » к сожалению, приложение остановилось.”. Может кто-нибудь помочь мне с этим? Спасибо!.

1 ответ

  1. например, необходимо добавить строку для идентификации mChart. Другие коды выглядят нормально.

     mChart=(PieChart)findViewByID(R.id.pieChart);