2014-10-11 29 views
1

你好我想顯示餅圖與從數據庫中獲取的數據,但我只能看到一個結果而不是全部。我不明白錯誤在哪裏。謝謝你的幫助。MPAndroidChart - 從SQLite數據庫中繪製數據

String sql = ......; 

    Cursor c = db.rawQuery(sql, null); 
    int count = c.getCount(); 

    double[] values = new double[count]; 
    String[] categoryNames = new String[count]; 
    int[] colori = new int [count]; 

    for(int m=0; m<count; m++) { 
     c.moveToNext();  
     categoryNames[m] = c.getString(0); 
     values[m] = c.getDouble(1); 
     colori[m] = c.getInt(2); 


    ArrayList<Entry> yVals1 = new ArrayList<Entry>(); 

    for (int i = 0; i < categoryNames.length; i++) { 
     yVals1.add(new Entry(m, m, (double) (values[i]))); 
    } 
    ArrayList<String> xVals = new ArrayList<String>();//array legend 

    for (int i = 0; i < categoryNames.length; i++) 
     xVals.add(categoryNames[m % categoryNames.length]); 

    PieDataSet set1 = new PieDataSet(yVals1, "Election Results"); 
    set1.setSliceSpace(3f); 
    set1.setColors(ColorTemplate.createColors(colori)); 

    PieData data = new PieData(xVals,set1); 
    mChart.setData(data); 
    // undo all highlights 
    mChart.highlightValues(null);  
    mChart.invalidate(); 
} 
     c.close(); 
     db.close();   

}

編輯------------------------- 我幾乎解決了,但無論數據I總是以相同的部分獲得圖表。例如,我有這些百分比: Category1 (15,4), Category2(30,8), Category3(53,8) 這是圖表,幫我找到錯誤?感謝 enter image description here

+0

你的代碼看起來不錯 – pskink 2014-10-11 16:59:04

+0

看一看我的回答。我認爲這個問題可能是你代碼中的一個簡單錯誤。 – 2014-10-13 21:03:36

回答

2

問題可能是你的循環不會關閉:

for(int m=0; m<count; m++) { 
     c.moveToNext();  
     categoryNames[m] = c.getString(0); 
     values[m] = c.getDouble(1); 
     colori[m] = c.getInt(2); 

你缺少右括號}

編輯:

而你沒有正確創建的Entry對象:

yVals1.add(new Entry(m, m, (double) (values[i]))); 

它應該是這樣的:

yVals1.add(new Entry((float) values[i], i)); 
+0

我編輯了我的帖子。謝謝 – user3608814 2014-10-21 11:59:21

+0

請看我的編輯。 – 2014-10-21 20:22:45